Do an empty begin_paint_region()/end_paint() for windows without
Tue Jul 13 00:40:29 2004 Soeren Sandmann <sandmann@daimi.au.dk> * gdk/gdkwindow.c (gdk_window_process_updates_internal): Do an empty begin_paint_region()/end_paint() for windows without EXPOSURE_MASK. * gdk/x11/gdkwindow-x11.c (_gdk_x11_window_tmp_unset_bg, _gdk_x11_window_tmp_reset_bg): Remove checks for EXPOSURE_MASK.
This commit is contained in:
committed by
Søren Sandmann Pedersen
parent
7cbe432b43
commit
dddab53b54
@ -1,3 +1,12 @@
|
|||||||
|
Tue Jul 13 00:40:29 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gdk/gdkwindow.c (gdk_window_process_updates_internal): Do an
|
||||||
|
empty begin_paint_region()/end_paint() for windows without
|
||||||
|
EXPOSURE_MASK.
|
||||||
|
|
||||||
|
* gdk/x11/gdkwindow-x11.c (_gdk_x11_window_tmp_unset_bg,
|
||||||
|
_gdk_x11_window_tmp_reset_bg): Remove checks for EXPOSURE_MASK.
|
||||||
|
|
||||||
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
||||||
|
|||||||
@ -1,3 +1,12 @@
|
|||||||
|
Tue Jul 13 00:40:29 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gdk/gdkwindow.c (gdk_window_process_updates_internal): Do an
|
||||||
|
empty begin_paint_region()/end_paint() for windows without
|
||||||
|
EXPOSURE_MASK.
|
||||||
|
|
||||||
|
* gdk/x11/gdkwindow-x11.c (_gdk_x11_window_tmp_unset_bg,
|
||||||
|
_gdk_x11_window_tmp_reset_bg): Remove checks for EXPOSURE_MASK.
|
||||||
|
|
||||||
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
||||||
|
|||||||
@ -1,3 +1,12 @@
|
|||||||
|
Tue Jul 13 00:40:29 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gdk/gdkwindow.c (gdk_window_process_updates_internal): Do an
|
||||||
|
empty begin_paint_region()/end_paint() for windows without
|
||||||
|
EXPOSURE_MASK.
|
||||||
|
|
||||||
|
* gdk/x11/gdkwindow-x11.c (_gdk_x11_window_tmp_unset_bg,
|
||||||
|
_gdk_x11_window_tmp_reset_bg): Remove checks for EXPOSURE_MASK.
|
||||||
|
|
||||||
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
||||||
|
|||||||
@ -1,3 +1,12 @@
|
|||||||
|
Tue Jul 13 00:40:29 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* gdk/gdkwindow.c (gdk_window_process_updates_internal): Do an
|
||||||
|
empty begin_paint_region()/end_paint() for windows without
|
||||||
|
EXPOSURE_MASK.
|
||||||
|
|
||||||
|
* gdk/x11/gdkwindow-x11.c (_gdk_x11_window_tmp_unset_bg,
|
||||||
|
_gdk_x11_window_tmp_reset_bg): Remove checks for EXPOSURE_MASK.
|
||||||
|
|
||||||
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
2004-07-12 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
* demos/gtk-demo/appwindow.c: Use a GtkAboutDialog.
|
||||||
|
|||||||
@ -2006,10 +2006,8 @@ gdk_window_process_updates_internal (GdkWindow *window)
|
|||||||
GdkRegion *update_area = private->update_area;
|
GdkRegion *update_area = private->update_area;
|
||||||
private->update_area = NULL;
|
private->update_area = NULL;
|
||||||
|
|
||||||
if (_gdk_event_func && gdk_window_is_viewable (window) &&
|
if (_gdk_event_func && gdk_window_is_viewable (window))
|
||||||
(private->event_mask & GDK_EXPOSURE_MASK))
|
|
||||||
{
|
{
|
||||||
GdkEvent event;
|
|
||||||
GdkRectangle window_rect;
|
GdkRectangle window_rect;
|
||||||
GdkRegion *expose_region;
|
GdkRegion *expose_region;
|
||||||
GdkRegion *window_region;
|
GdkRegion *window_region;
|
||||||
@ -2022,6 +2020,13 @@ gdk_window_process_updates_internal (GdkWindow *window)
|
|||||||
g_usleep (70000);
|
g_usleep (70000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
save_region = _gdk_windowing_window_queue_antiexpose (window, update_area);
|
||||||
|
|
||||||
|
if (save_region)
|
||||||
|
expose_region = gdk_region_copy (update_area);
|
||||||
|
else
|
||||||
|
expose_region = update_area;
|
||||||
|
|
||||||
gdk_drawable_get_size (GDK_DRAWABLE (private), &width, &height);
|
gdk_drawable_get_size (GDK_DRAWABLE (private), &width, &height);
|
||||||
|
|
||||||
window_rect.x = 0;
|
window_rect.x = 0;
|
||||||
@ -2029,32 +2034,41 @@ gdk_window_process_updates_internal (GdkWindow *window)
|
|||||||
window_rect.width = width;
|
window_rect.width = width;
|
||||||
window_rect.height = height;
|
window_rect.height = height;
|
||||||
|
|
||||||
save_region = _gdk_windowing_window_queue_antiexpose (window, update_area);
|
|
||||||
|
|
||||||
event.expose.type = GDK_EXPOSE;
|
|
||||||
event.expose.window = g_object_ref (window);
|
|
||||||
event.expose.count = 0;
|
|
||||||
|
|
||||||
if (save_region)
|
|
||||||
expose_region = gdk_region_copy (update_area);
|
|
||||||
else
|
|
||||||
expose_region = update_area;
|
|
||||||
window_region = gdk_region_rectangle (&window_rect);
|
window_region = gdk_region_rectangle (&window_rect);
|
||||||
gdk_region_intersect (expose_region,
|
gdk_region_intersect (expose_region,
|
||||||
window_region);
|
window_region);
|
||||||
gdk_region_destroy (window_region);
|
gdk_region_destroy (window_region);
|
||||||
|
|
||||||
|
if (!gdk_region_empty (expose_region))
|
||||||
|
{
|
||||||
|
if (private->event_mask & GDK_EXPOSURE_MASK)
|
||||||
|
{
|
||||||
|
GdkEvent event;
|
||||||
|
|
||||||
|
event.expose.type = GDK_EXPOSE;
|
||||||
|
event.expose.window = g_object_ref (window);
|
||||||
|
event.expose.count = 0;
|
||||||
event.expose.region = expose_region;
|
event.expose.region = expose_region;
|
||||||
gdk_region_get_clipbox (expose_region, &event.expose.area);
|
gdk_region_get_clipbox (expose_region, &event.expose.area);
|
||||||
|
|
||||||
if (!gdk_region_empty (expose_region))
|
|
||||||
{
|
|
||||||
(*_gdk_event_func) (&event, _gdk_event_data);
|
(*_gdk_event_func) (&event, _gdk_event_data);
|
||||||
|
|
||||||
|
g_object_unref (window);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Windows without GDK_EXPOSURE_MASK still need to
|
||||||
|
* get their backgrounds painted, because it
|
||||||
|
* may have been temporarily set to None when
|
||||||
|
* the expose was generated
|
||||||
|
*/
|
||||||
|
gdk_window_begin_paint_region (window, expose_region);
|
||||||
|
gdk_window_end_paint (window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expose_region != update_area)
|
if (expose_region != update_area)
|
||||||
gdk_region_destroy (expose_region);
|
gdk_region_destroy (expose_region);
|
||||||
g_object_unref (window);
|
|
||||||
}
|
}
|
||||||
if (!save_region)
|
if (!save_region)
|
||||||
gdk_region_destroy (update_area);
|
gdk_region_destroy (update_area);
|
||||||
|
|||||||
@ -284,13 +284,8 @@ _gdk_x11_window_tmp_unset_bg (GdkWindow *window,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't unset the background of windows that don't select for expose
|
|
||||||
* events. Such windows don't get drawn, so we need the X server
|
|
||||||
* drawing them to prevent them from containing garbage
|
|
||||||
*/
|
|
||||||
if (private->window_type != GDK_WINDOW_ROOT &&
|
if (private->window_type != GDK_WINDOW_ROOT &&
|
||||||
private->window_type != GDK_WINDOW_FOREIGN &&
|
private->window_type != GDK_WINDOW_FOREIGN)
|
||||||
(private->event_mask & GDK_EXPOSURE_MASK))
|
|
||||||
{
|
{
|
||||||
tmp_unset_bg (window);
|
tmp_unset_bg (window);
|
||||||
}
|
}
|
||||||
@ -322,8 +317,7 @@ _gdk_x11_window_tmp_reset_bg (GdkWindow *window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (private->window_type != GDK_WINDOW_ROOT &&
|
if (private->window_type != GDK_WINDOW_ROOT &&
|
||||||
private->window_type != GDK_WINDOW_FOREIGN &&
|
private->window_type != GDK_WINDOW_FOREIGN)
|
||||||
(private->event_mask & GDK_EXPOSURE_MASK))
|
|
||||||
{
|
{
|
||||||
tmp_reset_bg (window);
|
tmp_reset_bg (window);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user