asdfuser pushed a commit to branch evas-1.7.

commit 134e338a40af875d5f7b221a7a8dbeefa7a48f55
Author: Daniel Willmann <[email protected]>
Date:   Tue May 7 10:49:53 2013 +0100

    Revert "Backport rev 83789"
    
    This reverts commit 9a7a28b7582f516c67b23c4bb1a016cfc2ec5b31.
    Was reverted long ago in efl as it doesn't actually work.
    
    Signed-off-by: Daniel Willmann <[email protected]>
---
 ChangeLog                                          |  4 ++
 NEWS                                               |  1 +
 .../engines/software_x11/evas_xlib_outbuf.c        | 76 ++++------------------
 3 files changed, 17 insertions(+), 64 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 54da44a..93d3834 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1294,3 +1294,7 @@
 
         * Evas text: Fixed line size calculation when using multiple
         fonts.
+
+2013-05-16     Daniel Wilmann
+        * x11 backend: Revert "Fix memory usage spike when rotating with the
+                               software_x11 engine". This doesn't actually 
work.
diff --git a/NEWS b/NEWS
index 6188963..c8002db 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@ Fixes:
    * Evas: If an object goes to be hidden without replacing the cur/prev state 
info, the object context can be corrupted at the next show time. Now it 
replaces the cur/prev in that rare case.
    * Fix recursive proxy image rendering to just render black
    * Evas text: Fixed line size calculation when using multiple fonts.
+   * Revert "Fix memory usage spike when rotating with the software_x11 
engine."
 
 Evas 1.7.6
     * Fix SIGFPE in evas map update if image is 0.
diff --git a/src/modules/engines/software_x11/evas_xlib_outbuf.c 
b/src/modules/engines/software_x11/evas_xlib_outbuf.c
index 3cb1ea0..e337e99 100644
--- a/src/modules/engines/software_x11/evas_xlib_outbuf.c
+++ b/src/modules/engines/software_x11/evas_xlib_outbuf.c
@@ -362,7 +362,7 @@ evas_software_xlib_outbuf_setup_x(int w, int h, int rot, 
Outbuf_Depth depth,
 RGBA_Image *
 evas_software_xlib_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int 
w, int h, int *cx, int *cy, int *cw, int *ch)
 {
-   RGBA_Image         *im = NULL;
+   RGBA_Image         *im;
    Outbuf_Region      *obr;
    int                 bpl = 0;
    int                 use_shm = 1;
@@ -455,11 +455,6 @@ evas_software_xlib_outbuf_new_region_for_update(Outbuf 
*buf, int x, int y, int w
          }
        else
          {
-            /* FIXME: For the onebuf case we probably need to do the same 
thing we did below
-             * (try to get an existing image before we allocate a new one). 
This code path
-             * is not really used at the moment so no way to test (and that's 
why the change
-             * is not implemented here as well.
-             */
 #ifdef EVAS_CSERVE2
              if (evas_cserve2_use_get())
                im = (RGBA_Image 
*)evas_cache2_image_empty(evas_common_image_cache2_get());
@@ -613,73 +608,26 @@ evas_software_xlib_outbuf_new_region_for_update(Outbuf 
*buf, int x, int y, int w
      }
    else
      {
-        obr->xob = _find_xob(buf->priv.x11.xlib.disp,
-                             buf->priv.x11.xlib.vis,
-                             buf->priv.x11.xlib.depth,
-                             w, h,
-                             use_shm,
-                             NULL);
 #ifdef EVAS_CSERVE2
         if (evas_cserve2_use_get())
-          {
-             if (obr->xob)
-               im = (RGBA_Image 
*)evas_cache2_image_data(evas_common_image_cache2_get(),
-                                                        w, h,
-                                                        (DATA32 *) 
evas_software_xlib_x_output_buffer_data(obr->xob, &bpl),
-                                                        alpha, 
EVAS_COLORSPACE_ARGB8888);
-
-             if (!im)
-               {
-                  if (obr->xob) _unfind_xob(obr->xob, 0);
-                  im = (RGBA_Image 
*)evas_cache2_image_empty(evas_common_image_cache2_get());
-                  if (!im)
-                    {
-                      free(obr);
-                      return NULL;
-                    }
-                  else
-                    {
-                       im->cache_entry.w = w;
-                       im->cache_entry.h = h;
-                       im->cache_entry.flags.alpha |= alpha ? 1 : 0;
-                       evas_cache2_image_surface_alloc(&im->cache_entry, w, h);
-                    }
-               }
-          }
+          im = (RGBA_Image 
*)evas_cache2_image_empty(evas_common_image_cache2_get());
         else
 #endif
+          im = (RGBA_Image 
*)evas_cache_image_empty(evas_common_image_cache_get());
+        if (!im)
           {
-             if (obr->xob)
-               im = (RGBA_Image 
*)evas_cache_image_data(evas_common_image_cache_get(),
-                                                        w, h,
-                                                        (DATA32 *) 
evas_software_xlib_x_output_buffer_data(obr->xob, &bpl),
-                                                        alpha, 
EVAS_COLORSPACE_ARGB8888);
-
-             if (!im)
-               {
-                  if (obr->xob) _unfind_xob(obr->xob, 0);
-                  im = (RGBA_Image 
*)evas_cache_image_empty(evas_common_image_cache_get());
-                  if (!im)
-                    {
-                      free(obr);
-                      return NULL;
-                    }
-                  else
-                    {
-                       im->cache_entry.w = w;
-                       im->cache_entry.h = h;
-                       im->cache_entry.flags.alpha |= alpha ? 1 : 0;
-                       evas_cache_image_surface_alloc(&im->cache_entry, w, h);
-                    }
-               }
+             free(obr);
+             return NULL;
           }
-
-        /* Need to update cache_entry w/h here because the render path expects 
them to be updated
-         * to the new geometry. */
         im->cache_entry.w = w;
         im->cache_entry.h = h;
         im->cache_entry.flags.alpha |= alpha ? 1 : 0;
-
+#ifdef EVAS_CSERVE2
+        if (evas_cserve2_use_get())
+          evas_cache2_image_surface_alloc(&im->cache_entry, w, h);
+        else
+#endif
+          evas_cache_image_surface_alloc(&im->cache_entry, w, h);
        im->extended_info = obr;
        if ((buf->rot == 0) || (buf->rot == 180))
           {

-- 

------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d

Reply via email to