diff options
author | Alexander Larsson <alexl@redhat.com> | 2011-04-12 11:11:36 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2011-04-12 11:12:39 +0200 |
commit | f4bef2c7207dd0d238f0547479998d794433b74c (patch) | |
tree | 3cd58bc447b1472f7eacc572d17aa8214da43df0 /gdk/broadway/gdkwindow-broadway.c | |
parent | ca49ec2c8cefa966d04d8fe0fa4011da2e3d2dc5 (diff) | |
download | gtk+-f4bef2c7207dd0d238f0547479998d794433b74c.tar.gz |
[broadway] Combine window move and resize into one op
This way we avoid sending a configure event for the inbetween state
if we're resizeing and moving at the same time.
Diffstat (limited to 'gdk/broadway/gdkwindow-broadway.c')
-rw-r--r-- | gdk/broadway/gdkwindow-broadway.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c index 34a1ae6631..6b0a71392e 100644 --- a/gdk/broadway/gdkwindow-broadway.c +++ b/gdk/broadway/gdkwindow-broadway.c @@ -598,6 +598,7 @@ gdk_window_broadway_move_resize (GdkWindow *window, GdkWindowImplBroadway *impl = GDK_WINDOW_IMPL_BROADWAY (window->impl); GdkBroadwayDisplay *broadway_display; gboolean changed; + gboolean with_resize; changed = FALSE; @@ -607,17 +608,12 @@ gdk_window_broadway_move_resize (GdkWindow *window, changed = TRUE; window->x = x; window->y = y; - if (broadway_display->output != NULL) - { - broadway_output_move_surface (broadway_display->output, - impl->id, x, y); - queue_dirty_flush (broadway_display); - } } - + with_resize = FALSE; if (width > 0 || height > 0) { + with_resize = TRUE; if (width < 1) width = 1; @@ -633,13 +629,6 @@ gdk_window_broadway_move_resize (GdkWindow *window, impl->dirty = TRUE; impl->last_synced = FALSE; - if (broadway_display->output != NULL) - { - broadway_output_resize_surface (broadway_display->output, - impl->id, width, height); - queue_dirty_flush (broadway_display); - } - window->width = width; window->height = height; _gdk_broadway_window_resize_surface (window); @@ -651,6 +640,15 @@ gdk_window_broadway_move_resize (GdkWindow *window, GdkEvent *event; GList *node; + if (broadway_display->output != NULL) + { + broadway_output_move_resize_surface (broadway_display->output, + impl->id, + with_move, window->x, window->y, + with_resize, window->width, window->height); + queue_dirty_flush (broadway_display); + } + event = gdk_event_new (GDK_CONFIGURE); event->configure.window = g_object_ref (window); event->configure.x = window->x; |