[gtk+] mir: emit configure event on window move/resize
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] mir: emit configure event on window move/resize
- Date: Tue, 23 Jun 2015 17:17:51 +0000 (UTC)
commit be068607f68b185483154371548e0ea2123b0fcb
Author: William Hua <william hua canonical com>
Date: Thu Jun 18 10:39:28 2015 -0400
mir: emit configure event on window move/resize
Without this, some windows don't restart the paint clock needed to
actually render the contents.
gdk/mir/gdkmirwindowimpl.c | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
---
diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c
index 4623479..e46d26d 100644
--- a/gdk/mir/gdkmirwindowimpl.c
+++ b/gdk/mir/gdkmirwindowimpl.c
@@ -253,6 +253,43 @@ create_mir_surface (GdkDisplay *display,
return surface;
}
+static GdkDevice *
+get_pointer (GdkWindow *window)
+{
+ return gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (gdk_window_get_display
(window)));
+}
+
+static void
+send_event (GdkWindow *window, GdkDevice *device, GdkEvent *event)
+{
+ GdkDisplay *display;
+ GList *node;
+
+ gdk_event_set_device (event, device);
+ gdk_event_set_source_device (event, device);
+ gdk_event_set_screen (event, gdk_display_get_screen (gdk_window_get_display (window), 0));
+ event->any.window = g_object_ref (window);
+
+ display = gdk_window_get_display (window);
+ node = _gdk_event_queue_append (display, event);
+ _gdk_windowing_got_event (display, node, event, _gdk_display_get_next_serial (display));
+}
+
+static void
+generate_configure_event (GdkWindow *window,
+ gint width,
+ gint height)
+{
+ GdkEvent *event;
+
+ event = gdk_event_new (GDK_CONFIGURE);
+ event->configure.send_event = FALSE;
+ event->configure.width = width;
+ event->configure.height = height;
+
+ send_event (window, get_pointer (window), event);
+}
+
static void
ensure_surface_full (GdkWindow *window,
MirBufferUsage buffer_usage)
@@ -288,6 +325,8 @@ ensure_surface_full (GdkWindow *window,
_gdk_mir_event_source_queue (window_ref, &resize_event);
*/
+ generate_configure_event (window, window->width, window->height);
+
mir_surface_set_event_handler (impl->surface, event_cb, window_ref); // FIXME: Ignore some events until
shown
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]