summaryrefslogtreecommitdiff
path: root/gdk/broadway/gdkwindow-broadway.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2011-04-12 11:11:36 +0200
committerAlexander Larsson <alexl@redhat.com>2011-04-12 11:12:39 +0200
commitf4bef2c7207dd0d238f0547479998d794433b74c (patch)
tree3cd58bc447b1472f7eacc572d17aa8214da43df0 /gdk/broadway/gdkwindow-broadway.c
parentca49ec2c8cefa966d04d8fe0fa4011da2e3d2dc5 (diff)
downloadgtk+-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.c26
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;