summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2013-04-29 18:40:10 +0200
committerAlexander Larsson <alexl@redhat.com>2013-05-02 19:02:08 +0200
commitadc4f0cdd99cc269c66c5e611ede3c1b874ffc85 (patch)
treef2a6244ea1589e5cffef63a2481a2a389bac702a
parent9c0bf55a1762400c74f60f28a7d8221e53099c68 (diff)
downloadgtk+-adc4f0cdd99cc269c66c5e611ede3c1b874ffc85.tar.gz
gdkwindow: Make GdkPaintable normal GdkWindowImpl vfuncs
There is no need for this to be a separate interface, its just looking weird.
-rw-r--r--gdk/gdkinternals.h20
-rw-r--r--gdk/gdkwindow.c49
-rw-r--r--gdk/gdkwindowimpl.h3
-rw-r--r--gdk/quartz/gdkwindow-quartz.c34
4 files changed, 22 insertions, 84 deletions
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index d512220ed8..eb2aa6573c 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -351,26 +351,6 @@ void _gdk_windowing_got_event (GdkDisplay *display,
#define GDK_WINDOW_IS_MAPPED(window) (((window)->state & GDK_WINDOW_STATE_WITHDRAWN) == 0)
-#define GDK_TYPE_PAINTABLE (_gdk_paintable_get_type ())
-#define GDK_PAINTABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_PAINTABLE, GdkPaintable))
-#define GDK_IS_PAINTABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_PAINTABLE))
-#define GDK_PAINTABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GDK_TYPE_PAINTABLE, GdkPaintableIface))
-
-typedef struct _GdkPaintable GdkPaintable;
-typedef struct _GdkPaintableIface GdkPaintableIface;
-
-struct _GdkPaintableIface
-{
- GTypeInterface g_iface;
-
- void (* begin_paint_region) (GdkPaintable *paintable,
- GdkWindow *window,
- const cairo_region_t *region);
- void (* end_paint) (GdkPaintable *paintable);
-};
-
-GType _gdk_paintable_get_type (void) G_GNUC_CONST;
-
void _gdk_window_invalidate_for_expose (GdkWindow *window,
cairo_region_t *region);
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 3b476e2933..da7ffbb5a0 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -241,30 +241,6 @@ print_region (cairo_region_t *region)
}
#endif
-GType
-_gdk_paintable_get_type (void)
-{
- static GType paintable_type = 0;
-
- if (!paintable_type)
- {
- const GTypeInfo paintable_info =
- {
- sizeof (GdkPaintableIface), /* class_size */
- NULL, /* base_init */
- NULL, /* base_finalize */
- };
-
- paintable_type = g_type_register_static (G_TYPE_INTERFACE,
- g_intern_static_string ("GdkPaintable"),
- &paintable_info, 0);
-
- g_type_interface_add_prerequisite (paintable_type, G_TYPE_OBJECT);
- }
-
- return paintable_type;
-}
-
static void
gdk_window_init (GdkWindow *window)
{
@@ -2714,6 +2690,7 @@ gdk_window_begin_paint_region (GdkWindow *window,
const cairo_region_t *region)
{
GdkRectangle clip_box;
+ GdkWindowImplClass *impl_class;
GdkWindowPaint *paint;
GSList *list;
gboolean needs_surface;
@@ -2724,17 +2701,11 @@ gdk_window_begin_paint_region (GdkWindow *window,
!gdk_window_has_impl (window))
return;
- needs_surface = TRUE;
-
- if (GDK_IS_PAINTABLE (window->impl))
- {
- GdkPaintableIface *iface = GDK_PAINTABLE_GET_IFACE (window->impl);
-
- if (iface->begin_paint_region)
- iface->begin_paint_region ((GdkPaintable*)window->impl, window, region);
+ impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
- needs_surface = FALSE;
- }
+ needs_surface = TRUE;
+ if (impl_class->begin_paint_region)
+ needs_surface = impl_class->begin_paint_region (window, region);
paint = g_new0 (GdkWindowPaint, 1);
paint->region = cairo_region_copy (region);
@@ -2783,6 +2754,7 @@ gdk_window_end_paint (GdkWindow *window)
{
GdkWindow *composited;
GdkWindowPaint *paint;
+ GdkWindowImplClass *impl_class;
GdkRectangle clip_box;
cairo_region_t *full_clip;
cairo_t *cr;
@@ -2799,13 +2771,10 @@ gdk_window_end_paint (GdkWindow *window)
return;
}
- if (GDK_IS_PAINTABLE (window->impl))
- {
- GdkPaintableIface *iface = GDK_PAINTABLE_GET_IFACE (window->impl);
+ impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
- if (iface->end_paint)
- iface->end_paint ((GdkPaintable*)window->impl);
- }
+ if (impl_class->end_paint)
+ impl_class->end_paint (window);
paint = window->paint_stack->data;
diff --git a/gdk/gdkwindowimpl.h b/gdk/gdkwindowimpl.h
index 62e21ee335..38008e576a 100644
--- a/gdk/gdkwindowimpl.h
+++ b/gdk/gdkwindowimpl.h
@@ -101,6 +101,9 @@ struct _GdkWindowImplClass
gint *x,
gint *y,
GdkModifierType *mask);
+ gboolean (* begin_paint_region) (GdkWindow *window,
+ const cairo_region_t *region);
+ void (* end_paint) (GdkWindow *window);
cairo_region_t * (* get_shape) (GdkWindow *window);
cairo_region_t * (* get_input_shape) (GdkWindow *window);
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
index 0b837bb8a5..1b555e10f1 100644
--- a/gdk/quartz/gdkwindow-quartz.c
+++ b/gdk/quartz/gdkwindow-quartz.c
@@ -364,19 +364,18 @@ gdk_window_impl_quartz_init (GdkWindowImplQuartz *impl)
impl->type_hint = GDK_WINDOW_TYPE_HINT_NORMAL;
}
-static void
-gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable,
- GdkWindow *window,
+static gboolean
+gdk_window_impl_quartz_begin_paint_region (GdkWindow *window,
const cairo_region_t *region)
{
- GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (paintable);
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->imp);
cairo_region_t *clipped_and_offset_region;
cairo_t *cr;
clipped_and_offset_region = cairo_region_copy (region);
cairo_region_intersect (clipped_and_offset_region,
- window->clip_region_with_children);
+ window->clip_region);
cairo_region_translate (clipped_and_offset_region,
window->abs_x, window->abs_y);
@@ -415,12 +414,14 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable,
done:
cairo_region_destroy (clipped_and_offset_region);
+
+ return FALSE;
}
static void
-gdk_window_impl_quartz_end_paint (GdkPaintable *paintable)
+gdk_window_impl_quartz_end_paint (GdkWindow *window)
{
- GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (paintable);
+ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
impl->begin_paint_count--;
@@ -536,13 +537,6 @@ _gdk_quartz_display_after_process_all_updates (GdkDisplay *display)
NSEnableScreenUpdates ();
}
-static void
-gdk_window_impl_quartz_paintable_init (GdkPaintableIface *iface)
-{
- iface->begin_paint_region = gdk_window_impl_quartz_begin_paint_region;
- iface->end_paint = gdk_window_impl_quartz_end_paint;
-}
-
static const gchar *
get_default_title (void)
{
@@ -3040,6 +3034,8 @@ gdk_window_impl_quartz_class_init (GdkWindowImplQuartzClass *klass)
impl_class->resize_cairo_surface = gdk_window_quartz_resize_cairo_surface;
impl_class->get_shape = gdk_quartz_window_get_shape;
impl_class->get_input_shape = gdk_quartz_window_get_input_shape;
+ impl_class->begin_paint_region = gdk_window_impl_quartz_begin_paint_region;
+ impl_class->end_paint = gdk_window_impl_quartz_end_paint;
impl_class->focus = gdk_quartz_window_focus;
impl_class->set_type_hint = gdk_quartz_window_set_type_hint;
@@ -3115,19 +3111,9 @@ _gdk_window_impl_quartz_get_type (void)
(GInstanceInitFunc) gdk_window_impl_quartz_init,
};
- const GInterfaceInfo paintable_info =
- {
- (GInterfaceInitFunc) gdk_window_impl_quartz_paintable_init,
- NULL,
- NULL
- };
-
object_type = g_type_register_static (GDK_TYPE_WINDOW_IMPL,
"GdkWindowImplQuartz",
&object_info, 0);
- g_type_add_interface_static (object_type,
- GDK_TYPE_PAINTABLE,
- &paintable_info);
}
return object_type;