2008-06-03 Matthew Allum <mallum@openedhand.com>
authorMatthew Allum <mallum@openedhand.com>
Tue, 3 Jun 2008 16:25:17 +0000 (16:25 +0000)
committerMatthew Allum <mallum@openedhand.com>
Tue, 3 Jun 2008 16:25:17 +0000 (16:25 +0000)
        * clutter/glx/clutter-glx-texture-pixmap.c:
        Dont always fallback to x11 (slow) updates for a single
        failed pixmap.
        Minor cleanups.
        * clutter/x11/clutter-x11-texture-pixmap.c:
        Move shm allocation to only area updates.

ChangeLog
clutter/glx/clutter-glx-texture-pixmap.c
clutter/x11/clutter-x11-texture-pixmap.c

index a7f821c..a4333dc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-06-03  Matthew Allum  <mallum@openedhand.com>
+
+       * clutter/glx/clutter-glx-texture-pixmap.c:
+        Dont always fallback to x11 (slow) updates for a single
+        failed pixmap.
+        Minor cleanups.
+       * clutter/x11/clutter-x11-texture-pixmap.c:
+        Move shm allocation to only area updates.
+
 2008-06-03  Øyvind Kolås  <pippin@o-hand.com>
 
        * clutter/clutter-container.c: (container_get_child_property): 
index 9faf6a2..619f930 100644 (file)
@@ -431,7 +431,7 @@ clutter_glx_texture_pixmap_create_glx_pixmap (ClutterGLXTexturePixmap *texture)
   guint                           depth;
   Pixmap                          pixmap;
   guint                                  pixmap_width, pixmap_height;
-  ClutterBackendGLX             *backend_glx;
+  ClutterBackendGLX              *backend_glx;
 
   CLUTTER_NOTE (TEXTURE, "Creating GLXPixmap");
 
@@ -439,12 +439,15 @@ clutter_glx_texture_pixmap_create_glx_pixmap (ClutterGLXTexturePixmap *texture)
 
   dpy = clutter_x11_get_default_display ();
 
+  priv->use_fallback = FALSE;
+
   g_object_get (texture,
                 "pixmap-width",  &pixmap_width,
                 "pixmap-height", &pixmap_height,
                 "pixmap-depth",  &depth,
                 "pixmap",        &pixmap,
                 NULL);
+
   if (!pixmap)
     {
       goto cleanup;
@@ -545,6 +548,7 @@ clutter_glx_texture_pixmap_update_area (ClutterX11TexturePixmap *texture,
 
   if (priv->use_fallback)
     {
+      CLUTTER_NOTE (TEXTURE, "Falling back to X11..");
       parent_class->update_area (texture,
                                  x, y,
                                  width, height);
@@ -556,6 +560,8 @@ clutter_glx_texture_pixmap_update_area (ClutterX11TexturePixmap *texture,
   
   if (texture_bind (CLUTTER_GLX_TEXTURE_PIXMAP(texture)))
     {
+      CLUTTER_NOTE (TEXTURE, "Really updating via GLX");
+
       clutter_x11_trap_x_errors ();
       
       (_gl_bind_tex_image) (dpy,
index 1259492..f4e0285 100644 (file)
@@ -553,6 +553,9 @@ clutter_x11_texture_pixmap_update_area_real (ClutterX11TexturePixmap *texture,
   if (!priv->pixmap)
     return;
 
+  if (priv->shminfo.shmid == -1)
+    try_alloc_shm (texture);    
+
   clutter_x11_trap_x_errors ();
 
   if (priv->have_shm)
@@ -855,19 +858,28 @@ clutter_x11_texture_pixmap_set_pixmap (ClutterX11TexturePixmap *texture,
   g_object_unref (texture);
 
   free_shm_resources (texture);
-  if (pixmap != None)
-    try_alloc_shm (texture);
 
   if (priv->depth != 0 &&
       priv->pixmap != None &&
       priv->pixmap_width != 0 &&
       priv->pixmap_height != 0)
     {
+      gboolean sync_size = TRUE;
+
       if (CLUTTER_ACTOR_IS_REALIZED (texture))
         clutter_x11_texture_pixmap_update_area (texture,
                                                 0, 0,
                                                 priv->pixmap_width,
                                                 priv->pixmap_height);
+
+#if 0
+      /* Borked - externally resizing resets this prop.. */
+      g_object_get (texture, "sync-size", &sync_size, NULL);
+
+      /*if (sync_size)*/
+        clutter_actor_set_size (CLUTTER_ACTOR(texture),
+                                priv->pixmap_width, priv->pixmap_height);
+#endif
     }
 }
 
@@ -897,39 +909,6 @@ clutter_x11_texture_pixmap_update_area (ClutterX11TexturePixmap *texture,
   g_signal_emit (texture, signals[UPDATE_AREA], 0, x, y, width, height);
 }
 
-/* FIXME: to implement */
-void
-clutter_x11_texture_pixmap_set_from_window (ClutterX11TexturePixmap *texture,
-                                            Window                   win,
-                                            gboolean                 reflect)
-{
-  ClutterX11TexturePixmapPrivate *priv;
-
-  g_return_if_fail (CLUTTER_X11_IS_TEXTURE_PIXMAP (texture));
-
-  /* This would mainly be used for compositing type situations 
-   * with named pixmap (cannot be regular pixmap) and setting up  
-   * actual window redirection.
-   *
-   * It also seems to can pass a window to texture_pixmap and it
-   * it works like redirectwindow automatic. 
-   *
-   * Note windows do however change size, whilst pixmaps do not. 
-  */
-
-  priv = texture->priv;
-
-  /*
-  priv->window_pixmap = XCompositeNameWindowPixmap (dpy, win);
-
-  XCompositeRedirectWindow(clutter_x11_get_default_display(),
-                           win_remote,
-                           CompositeRedirectAutomatic);
-  */
-}
-
-
-
 /* FIXME: Below will change, just proof of concept atm - it will not work
  *        100% for named pixmaps. 
 */