gdk[cairo|gl]context-win32.c: Use gdk_win32_surface_handle_queued_move_resize()

Use the shared function that was added in the previous commit, to simplify
things.

Also make gdk_win32_surface_get_queued_window_rect() and
gdk_win32_surface_apply_queued_move_resize() back into static functions, since
they are now used only by the code in gdksurface-win32.c
This commit is contained in:
Chun-wei Fan 2020-08-05 10:43:11 +08:00
parent c6ada2a329
commit 46a8a3fe31
4 changed files with 4 additions and 46 deletions

View File

@ -107,23 +107,7 @@ gdk_win32_cairo_context_begin_frame (GdkDrawContext *draw_context,
impl = GDK_WIN32_SURFACE (surface); impl = GDK_WIN32_SURFACE (surface);
scale = gdk_surface_get_scale_factor (surface); scale = gdk_surface_get_scale_factor (surface);
self->layered = impl->layered; queued_window_rect = gdk_win32_surface_handle_queued_move_resize (draw_context);
gdk_win32_surface_get_queued_window_rect (surface, scale, &queued_window_rect);
/* Apply queued resizes for non-double-buffered and non-layered windows
* before painting them (we paint on the window DC directly,
* it must have the right size).
* Due to some poorly-undetstood issue delayed
* resizing of double-buffered windows can produce weird
* artefacts, so these are also resized before we paint.
*/
if (impl->drag_move_resize_context.native_move_resize_pending &&
!self->layered)
{
impl->drag_move_resize_context.native_move_resize_pending = FALSE;
gdk_win32_surface_apply_queued_move_resize (surface, queued_window_rect);
}
width = queued_window_rect.right - queued_window_rect.left; width = queued_window_rect.right - queued_window_rect.left;
height = queued_window_rect.bottom - queued_window_rect.top; height = queued_window_rect.bottom - queued_window_rect.top;

View File

@ -243,27 +243,10 @@ gdk_win32_gl_context_begin_frame (GdkDrawContext *draw_context,
{ {
GdkGLContext *context = GDK_GL_CONTEXT (draw_context); GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
GdkSurface *surface; GdkSurface *surface;
GdkWin32Surface *impl;
RECT queued_window_rect;
surface = gdk_gl_context_get_surface (context); surface = gdk_gl_context_get_surface (context);
impl = GDK_WIN32_SURFACE (surface);
gdk_win32_surface_get_queued_window_rect (surface, gdk_win32_surface_handle_queued_move_resize (draw_context);
gdk_surface_get_scale_factor (surface),
&queued_window_rect);
/* Apply queued resizes GL windows before painting them
* (we paint on the window DC directly, it must have the right size).
* Due to some poorly-understood issue delayed
* resizing of double-buffered windows can produce weird
* artefacts, so these are also resized before we paint.
*/
if (impl->drag_move_resize_context.native_move_resize_pending)
{
impl->drag_move_resize_context.native_move_resize_pending = FALSE;
gdk_win32_surface_apply_queued_move_resize (surface, queued_window_rect);
}
GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_parent_class)->begin_frame (draw_context, update_area); GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_parent_class)->begin_frame (draw_context, update_area);
if (gdk_gl_context_get_shared_context (context)) if (gdk_gl_context_get_shared_context (context))

View File

@ -5103,7 +5103,7 @@ _gdk_win32_surface_get_egl_surface (GdkSurface *surface,
} }
#endif #endif
void static void
gdk_win32_surface_get_queued_window_rect (GdkSurface *surface, gdk_win32_surface_get_queued_window_rect (GdkSurface *surface,
int scale, int scale,
RECT *return_window_rect) RECT *return_window_rect)
@ -5125,7 +5125,7 @@ gdk_win32_surface_get_queued_window_rect (GdkSurface *surface,
*return_window_rect = window_rect; *return_window_rect = window_rect;
} }
void static void
gdk_win32_surface_apply_queued_move_resize (GdkSurface *surface, gdk_win32_surface_apply_queued_move_resize (GdkSurface *surface,
RECT window_rect) RECT window_rect)
{ {

View File

@ -396,15 +396,6 @@ void gdk_win32_surface_move_resize (GdkSurface *window,
RECT RECT
gdk_win32_surface_handle_queued_move_resize (GdkDrawContext *draw_context); gdk_win32_surface_handle_queued_move_resize (GdkDrawContext *draw_context);
void
gdk_win32_surface_get_queued_window_rect (GdkSurface *surface,
int scale,
RECT *return_window_rect);
void
gdk_win32_surface_apply_queued_move_resize (GdkSurface *surface,
RECT window_rect);
#ifdef GDK_WIN32_ENABLE_EGL #ifdef GDK_WIN32_ENABLE_EGL
EGLSurface _gdk_win32_surface_get_egl_surface (GdkSurface *surface, EGLSurface _gdk_win32_surface_get_egl_surface (GdkSurface *surface,
EGLConfig config, EGLConfig config,