]> Pileus Git - ~andy/gtk/blobdiff - gdk/directfb/gdkgc-directfb.c
Do not use static GTypeInfo and GInterfaceInfo
[~andy/gtk] / gdk / directfb / gdkgc-directfb.c
index 88b00ca4dce3b6111748a6e828113216052afba4..7348312006d9cc46e0f3c8b34a98fbf9af56b3c2 100644 (file)
@@ -30,7 +30,9 @@
  *            Sven Neumann <sven@convergence.de>
  */
 
-#include <config.h>
+#undef GDK_DISABLE_DEPRECATED
+
+#include "config.h"
 #include "gdk.h"
 
 #include <string.h>
@@ -69,7 +71,7 @@ gdk_gc_directfb_get_type (void)
 
   if (!object_type)
     {
-      static const GTypeInfo object_info =
+      const GTypeInfo object_info =
       {
         sizeof (GdkGCDirectFBClass),
         (GBaseInitFunc) NULL,
@@ -111,8 +113,8 @@ gdk_gc_directfb_finalize (GObject *object)
   GdkGC         *gc      = GDK_GC (object);
   GdkGCDirectFB *private = GDK_GC_DIRECTFB (gc);
 
-  if (private->clip_region)
-    gdk_region_destroy (private->clip_region);
+  if (private->clip_region.numRects)
+    temp_region_deinit (&private->clip_region);
   if (private->values.clip_mask)
     g_object_unref (private->values.clip_mask);
   if (private->values.stipple)
@@ -260,11 +262,7 @@ gdk_directfb_gc_set_values (GdkGC           *gc,
       if (oldpm)
         g_object_unref (oldpm);
 
-      if (private->clip_region)
-        {
-          gdk_region_destroy (private->clip_region);
-          private->clip_region = NULL;
-        }
+      temp_region_reset (&private->clip_region);
     }
 
   if (values_mask & GDK_GC_SUBWINDOW)
@@ -352,8 +350,9 @@ gc_unset_clip_mask (GdkGC *gc)
 
 
 void
-_gdk_windowing_gc_set_clip_region (GdkGC     *gc,
-                        GdkRegion *region)
+_gdk_windowing_gc_set_clip_region (GdkGC           *gc,
+                                   const GdkRegion *region,
+                                   gboolean         reset_origin)
 {
   GdkGCDirectFB *data;
 
@@ -361,22 +360,21 @@ _gdk_windowing_gc_set_clip_region (GdkGC     *gc,
 
   data = GDK_GC_DIRECTFB (gc);
 
-  if (region == data->clip_region)
+  if (region == &data->clip_region)
     return;
 
-  if (data->clip_region)
-    {
-      gdk_region_destroy (data->clip_region);
-      data->clip_region = NULL;
-    }
-
   if (region)
-    data->clip_region = gdk_region_copy (region);
+    temp_region_init_copy (&data->clip_region, region);
+  else
+    temp_region_reset (&data->clip_region);
 
-  gc->clip_x_origin = 0;
-  gc->clip_y_origin = 0;
-  data->values.clip_x_origin = 0;
-  data->values.clip_y_origin = 0;
+  if (reset_origin)
+    {
+      gc->clip_x_origin = 0;
+      gc->clip_y_origin = 0;
+      data->values.clip_x_origin = 0;
+      data->values.clip_y_origin = 0;
+    }
 
   gc_unset_clip_mask (gc);
 }
@@ -392,8 +390,7 @@ _gdk_windowing_gc_copy (GdkGC *dst_gc,
 
   dst_private = GDK_GC_DIRECTFB (dst_gc);
 
-  if (dst_private->clip_region)
-    gdk_region_destroy(dst_private->clip_region);
+  temp_region_reset(&dst_private->clip_region);
 
   if (dst_private->values_mask & GDK_GC_FONT)
     gdk_font_unref (dst_private->values.font);
@@ -413,8 +410,6 @@ _gdk_windowing_gc_copy (GdkGC *dst_gc,
     g_object_ref (dst_private->values.stipple);
   if (dst_private->values_mask & GDK_GC_CLIP_MASK)
     g_object_ref (dst_private->values.clip_mask);
-  if (dst_private->clip_region)
-    dst_private->clip_region = gdk_region_copy (dst_private->clip_region);
 }
 
 /**