summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2018-06-20 17:27:30 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2018-06-28 15:33:42 +0800
commitb6db96cd1a3de19d7b356a657b9330a292772c98 (patch)
tree9b8c34f66adccd95ed149d4e4a1ae43941788cd5
parentb2ea707614bea41e81743c05e43b4206c4d2cfa7 (diff)
downloadgtk+-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.c5
-rw-r--r--gdk/win32/gdkwindow-win32.c9
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;