mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-13 22:10:08 +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>
|
2007-04-18 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gdk/gdkregion-generic.h (GROWREGION): Handle the case
|
* 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
|
static void
|
||||||
gdk_window_quartz_process_all_updates (void)
|
gdk_window_quartz_process_all_updates (void)
|
||||||
{
|
{
|
||||||
@ -267,28 +295,7 @@ gdk_window_quartz_process_all_updates (void)
|
|||||||
|
|
||||||
while (tmp_list)
|
while (tmp_list)
|
||||||
{
|
{
|
||||||
GdkWindowObject *private = tmp_list->data;
|
gdk_window_quartz_process_updates_internal (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);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (tmp_list->data);
|
g_object_unref (tmp_list->data);
|
||||||
tmp_list = tmp_list->next;
|
tmp_list = tmp_list->next;
|
||||||
@ -350,12 +357,9 @@ gdk_window_impl_quartz_process_updates (GdkPaintable *paintable,
|
|||||||
|
|
||||||
if (private->update_area)
|
if (private->update_area)
|
||||||
{
|
{
|
||||||
gdk_region_destroy (private->update_area);
|
gdk_window_quartz_process_updates_internal ((GdkWindow *) private);
|
||||||
private->update_area = NULL;
|
update_windows = g_slist_remove (update_windows, private);
|
||||||
}
|
}
|
||||||
|
|
||||||
[impl->view setNeedsDisplay: YES];
|
|
||||||
update_windows = g_slist_remove (update_windows, private);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user