diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2018-06-20 17:27:30 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2018-06-28 15:33:42 +0800 |
commit | b6db96cd1a3de19d7b356a657b9330a292772c98 (patch) | |
tree | 9b8c34f66adccd95ed149d4e4a1ae43941788cd5 | |
parent | b2ea707614bea41e81743c05e43b4206c4d2cfa7 (diff) | |
download | gtk+-wip/gtk324.win.egl.tar.gz |
GDK/Win32: Cleanup and further fix OpenGL/ES glitcheswip/gtk324.win.egl
We also need to invalidate the OpenGL/ES window when we resize the
window via a mouse drag operation, so that we don't get glitches in such
situations, because they are not covered in GdkWindow's
impl_class->move_resize().
Make sure that we only force the invalidation when necessary (as it is
expensive), and clean up the gdkevents-win32.c code so that we include
gdkglcontext-win32.h in the right place instead of using an extern, as
we need to invalidate the window accordingly.
-rw-r--r-- | gdk/win32/gdkevents-win32.c | 5 | ||||
-rw-r--r-- | gdk/win32/gdkwindow-win32.c | 9 |
2 files changed, 7 insertions, 7 deletions
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index f153dcba3d..c050b9d64c 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -51,6 +51,7 @@ #include "gdkmonitorprivate.h" #include "gdkwin32.h" #include "gdkkeysyms.h" +#include "gdkglcontext-win32.h" #include "gdkdevicemanager-win32.h" #include "gdkdeviceprivate.h" #include "gdkdevice-wintab.h" @@ -93,8 +94,6 @@ * Private function declarations */ -extern void _gdk_win32_window_invalidate_egl_framebuffer (GdkWindow *window); - #define SYNAPSIS_ICON_WINDOW_CLASS "SynTrackCursorWindowClass" static gboolean gdk_event_translate (MSG *msg, @@ -3342,6 +3341,8 @@ gdk_event_translate (MSG *msg, { MINMAXINFO our_mmi; + _gdk_win32_window_invalidate_egl_framebuffer (window); + if (_gdk_win32_window_fill_min_max_info (window, &our_mmi)) { windowpos = (WINDOWPOS *) msg->lParam; diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 3535859194..28f2b7696d 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -1701,8 +1701,6 @@ gdk_win32_window_move_resize (GdkWindow *window, window_impl = GDK_WINDOW_IMPL_WIN32 (window->impl); window_impl->inhibit_configure = TRUE; - _gdk_win32_window_invalidate_egl_framebuffer (window); - /* We ignore changes to the window being moved or resized by the user, as we don't want to fight the user */ if (GDK_WINDOW_HWND (window) == _modal_move_resize_window) @@ -1714,6 +1712,7 @@ gdk_win32_window_move_resize (GdkWindow *window, } else { + _gdk_win32_window_invalidate_egl_framebuffer (window); if (with_move) { gdk_win32_window_move_resize_internal (window, x, y, width, height); @@ -4778,6 +4777,9 @@ gdk_win32_window_end_move_resize_drag (GdkWindow *window) GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); GdkW32DragMoveResizeContext *context = &impl->drag_move_resize_context; + if (context->op == GDK_WIN32_DRAGOP_RESIZE) + _gdk_win32_window_invalidate_egl_framebuffer (window); + context->op = GDK_WIN32_DRAGOP_NONE; gdk_device_ungrab (context->device, GDK_CURRENT_TIME); @@ -5277,8 +5279,6 @@ gdk_win32_window_maximize (GdkWindow *window) GDK_WINDOW_HWND (window), _gdk_win32_window_state_to_string (window->state))); - _gdk_win32_window_invalidate_egl_framebuffer (window); - if (GDK_WINDOW_IS_MAPPED (window)) GtkShowWindow (window, SW_MAXIMIZE); else @@ -6040,7 +6040,6 @@ GtkShowWindow (GdkWindow *window, case SW_SHOWNA: case SW_SHOWNOACTIVATE: case SW_SHOWNORMAL: - _gdk_win32_window_invalidate_egl_framebuffer (window); if (IsWindowVisible (hwnd)) break; |