[gtk+/gtk-2-22] directfb: fix GdkPixmap creation



commit 65f7b09b39d86b9594e057ae727defe95189b741
Author: Lionel Landwerlin <llandwerlin gmail com>
Date:   Sat May 15 21:22:41 2010 +0200

    directfb: fix GdkPixmap creation
    
    Since GDK has introduced the offscreen window concept, pixmap can be
    created using drawables which aren't native windows. This patch fix
    this assumption.
    
    Signed-off-by: Lionel Landwerlin <llandwerlin gmail com>

 gdk/directfb/gdkpixmap-directfb.c |   56 +++++++++++++++---------------------
 1 files changed, 23 insertions(+), 33 deletions(-)
---
diff --git a/gdk/directfb/gdkpixmap-directfb.c b/gdk/directfb/gdkpixmap-directfb.c
index 504f5e7..e26f3dc 100644
--- a/gdk/directfb/gdkpixmap-directfb.c
+++ b/gdk/directfb/gdkpixmap-directfb.c
@@ -113,41 +113,31 @@ _gdk_pixmap_new (GdkDrawable *drawable,
                            width, height, depth));
 
   if (depth == -1)
-    {
-      draw_impl =
-        GDK_DRAWABLE_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (drawable)->impl);
-
-      g_return_val_if_fail (draw_impl != NULL, NULL);
+    depth = gdk_drawable_get_depth (GDK_DRAWABLE (drawable));
 
-      draw_impl->surface->GetPixelFormat (draw_impl->surface, &format);
-      depth = DFB_BITS_PER_PIXEL (format);
-    }
-  else
+  switch (depth)
     {
-      switch (depth)
-        {
-        case  1:
-          format = DSPF_A8;
-          break;
-        case  8:
-          format = DSPF_LUT8;
-          break;
-        case 15:
-          format = DSPF_ARGB1555;
-          break;
-        case 16:
-          format = DSPF_RGB16;
-          break;
-        case 24:
-          format = DSPF_RGB24;
-          break;
-        case 32:
-          format = DSPF_RGB32;
-          break;
-        default:
-          g_message ("unimplemented %s for depth %d", G_STRFUNC, depth);
-          return NULL;
-        }
+    case  1:
+      format = DSPF_A8;
+      break;
+    case  8:
+      format = DSPF_LUT8;
+      break;
+    case 15:
+      format = DSPF_ARGB1555;
+      break;
+    case 16:
+      format = DSPF_RGB16;
+      break;
+    case 24:
+      format = DSPF_RGB24;
+      break;
+    case 32:
+      format = DSPF_RGB32;
+      break;
+    default:
+      g_message ("unimplemented %s for depth %d", G_STRFUNC, depth);
+      return NULL;
     }
 
   if (!(surface =



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]