mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 13:41:07 +00:00
Refactor the process updates functions to share code between them. Also
2007-04-18 Richard Hult <richard@imendio.com> * gdk/quartz/gdkwindow-quartz.c: (gdk_window_quartz_process_updates_internal), (gdk_window_quartz_process_all_updates), (gdk_window_impl_quartz_process_updates): Refactor the process updates functions to share code between them. Also fixes bug #427660 by not updating larger regions than necessary. svn path=/trunk/; revision=17610
This commit is contained in:
parent
d558d49c14
commit
c8d89a96a2
@ -1,3 +1,12 @@
|
||||
2007-04-18 Richard Hult <richard@imendio.com>
|
||||
|
||||
* gdk/quartz/gdkwindow-quartz.c:
|
||||
(gdk_window_quartz_process_updates_internal),
|
||||
(gdk_window_quartz_process_all_updates),
|
||||
(gdk_window_impl_quartz_process_updates): Refactor the process
|
||||
updates functions to share code between them. Also fixes bug
|
||||
#427660 by not updating larger regions than necessary.
|
||||
|
||||
2007-04-18 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gdk/gdkregion-generic.h (GROWREGION): Handle the case
|
||||
|
@ -252,6 +252,34 @@ gdk_window_impl_quartz_end_paint (GdkPaintable *paintable)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_window_quartz_process_updates_internal (GdkWindow *window)
|
||||
{
|
||||
GdkWindowObject *private = (GdkWindowObject *) window;
|
||||
GdkWindowImplQuartz *impl = (GdkWindowImplQuartz *) private->impl;
|
||||
|
||||
if (private->update_area)
|
||||
{
|
||||
int i, n_rects;
|
||||
GdkRectangle *rects;
|
||||
|
||||
gdk_region_get_rectangles (private->update_area, &rects, &n_rects);
|
||||
|
||||
gdk_region_destroy (private->update_area);
|
||||
private->update_area = NULL;
|
||||
|
||||
for (i = 0; i < n_rects; i++)
|
||||
{
|
||||
[impl->view setNeedsDisplayInRect:NSMakeRect (rects[i].x, rects[i].y,
|
||||
rects[i].width, rects[i].height)];
|
||||
}
|
||||
|
||||
[impl->view displayIfNeeded];
|
||||
|
||||
g_free (rects);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_window_quartz_process_all_updates (void)
|
||||
{
|
||||
@ -267,28 +295,7 @@ gdk_window_quartz_process_all_updates (void)
|
||||
|
||||
while (tmp_list)
|
||||
{
|
||||
GdkWindowObject *private = tmp_list->data;
|
||||
GdkWindowImplQuartz *impl = (GdkWindowImplQuartz *) private->impl;
|
||||
int i, n_rects;
|
||||
GdkRectangle *rects;
|
||||
|
||||
if (private->update_area)
|
||||
{
|
||||
gdk_region_get_rectangles (private->update_area, &rects, &n_rects);
|
||||
|
||||
gdk_region_destroy (private->update_area);
|
||||
private->update_area = NULL;
|
||||
|
||||
for (i = 0; i < n_rects; i++)
|
||||
{
|
||||
[impl->view setNeedsDisplayInRect:NSMakeRect (rects[i].x, rects[i].y,
|
||||
rects[i].width, rects[i].height)];
|
||||
}
|
||||
|
||||
[impl->view displayIfNeeded];
|
||||
|
||||
g_free (rects);
|
||||
}
|
||||
gdk_window_quartz_process_updates_internal (tmp_list->data);
|
||||
|
||||
g_object_unref (tmp_list->data);
|
||||
tmp_list = tmp_list->next;
|
||||
@ -350,12 +357,9 @@ gdk_window_impl_quartz_process_updates (GdkPaintable *paintable,
|
||||
|
||||
if (private->update_area)
|
||||
{
|
||||
gdk_region_destroy (private->update_area);
|
||||
private->update_area = NULL;
|
||||
}
|
||||
|
||||
[impl->view setNeedsDisplay: YES];
|
||||
update_windows = g_slist_remove (update_windows, private);
|
||||
gdk_window_quartz_process_updates_internal ((GdkWindow *) private);
|
||||
update_windows = g_slist_remove (update_windows, private);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user