forked from AuroraMiddleware/gtk
Automatically flush window when doing non-double-buffered expose
Applications using non-double-buffered drawing using cairo (e.g. Abiword) can draw directly to the window using cairo and thus manage to avoid the automatic flushing of outstanding moves. This can cause redraw inconsistencies like bug 593507. We fix this by always flushing when exposing non-double-buffered widgets.
This commit is contained in:
parent
cfeba9c389
commit
7ab7ffa542
@ -662,6 +662,7 @@ gdk_window_resize
|
||||
gdk_window_move_resize
|
||||
gdk_window_scroll
|
||||
gdk_window_move_region
|
||||
gdk_window_flush
|
||||
gdk_window_ensure_native
|
||||
gdk_window_reparent
|
||||
gdk_window_clear
|
||||
|
@ -1559,7 +1559,15 @@ gtk_main_do_event (GdkEvent *event)
|
||||
gdk_window_end_paint (event->any.window);
|
||||
}
|
||||
else
|
||||
gtk_widget_send_expose (event_widget, event);
|
||||
{
|
||||
/* The app may paint with a previously allocated cairo_t,
|
||||
which will draw directly to the window. We can't catch cairo
|
||||
drap operatoins to automatically flush the window, thus we
|
||||
need to explicitly flush any outstanding moves or double
|
||||
buffering */
|
||||
gdk_window_flush (event->any.window);
|
||||
gtk_widget_send_expose (event_widget, event);
|
||||
}
|
||||
break;
|
||||
|
||||
case GDK_PROPERTY_NOTIFY:
|
||||
|
Loading…
Reference in New Issue
Block a user