diff --git a/ChangeLog b/ChangeLog index 541e0b01a..76d250310 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Aug 9 05:38:33 2004 Soeren Sandmann + + * src/effects.c (graphics_sync): New function. + * src/effects.c (effects_draw_box_animation_timeout): Use it here + to synchronize with the hardware between each frame. + 2004-08-08 Rob Adams * src/window.c (meta_window_move_resize_internal): Add #ifdef diff --git a/src/effects.c b/src/effects.c index dee152961..e361c091e 100644 --- a/src/effects.c +++ b/src/effects.c @@ -125,6 +125,22 @@ update_wireframe_window (MetaDisplay *display, #endif } +static void +graphics_sync (BoxAnimationContext *context) +{ + XImage *image; + + /* A hack to force the X server to synchronize with the + * graphics hardware + */ + image = XGetImage (context->screen->display->xdisplay, + context->screen->xroot, + 0, 0, 1, 1, + AllPlanes, ZPixmap); + + XDestroyImage (image); +} + static gboolean effects_draw_box_animation_timeout (BoxAnimationContext *context) { @@ -182,6 +198,8 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context) XDestroyWindow (context->screen->display->xdisplay, context->wireframe_xwindow); } + + graphics_sync (context); g_free (context); return FALSE; @@ -267,7 +285,7 @@ effects_draw_box_animation_timeout (BoxAnimationContext *context) } /* kick changes onto the server */ - XFlush (context->screen->display->xdisplay); + graphics_sync (context); return TRUE; } diff --git a/src/effects.h b/src/effects.h index 82dc0c518..38cec4bfc 100644 --- a/src/effects.h +++ b/src/effects.h @@ -25,7 +25,7 @@ #include "util.h" #include "screen.h" -#define META_MINIMIZE_ANIMATION_LENGTH 0.35 +#define META_MINIMIZE_ANIMATION_LENGTH 0.25 #define META_SHADE_ANIMATION_LENGTH 0.2 typedef enum