Title: [108991] trunk/Source/WebKit/efl
Revision
108991
Author
[email protected]
Date
2012-02-27 07:07:23 -0800 (Mon, 27 Feb 2012)

Log Message

[EFL] Pairing up between evas_object_image_data_get and evas_object_image_data_set.
https://bugs.webkit.org/show_bug.cgi?id=79031

Patch by JungJik Lee <[email protected]> on 2012-02-27
Reviewed by Zoltan Herczeg.

- Get the pixel data when the cairo surface is created.
- evas_object_image_data_get increases the reference count and returns the image buffer pointer.
evas_object_image_data_set decreases the reference count and when the ref count become zero,
the function releases the cached image inside evas engine.
We should make a pair between evas_object_image_data_set/get to return evas resource.

* ewk/ewk_tiled_backing_store.h:
(_Ewk_Tile):
* ewk/ewk_tiled_model.cpp:
(tile_account):
(ewk_tile_new):
* ewk/ewk_view_tiled.cpp:
(_ewk_view_tiled_render_cb):

Modified Paths

Diff

Modified: trunk/Source/WebKit/efl/ChangeLog (108990 => 108991)


--- trunk/Source/WebKit/efl/ChangeLog	2012-02-27 15:05:01 UTC (rev 108990)
+++ trunk/Source/WebKit/efl/ChangeLog	2012-02-27 15:07:23 UTC (rev 108991)
@@ -1,3 +1,24 @@
+2012-02-27  JungJik Lee  <[email protected]>
+
+        [EFL] Pairing up between evas_object_image_data_get and evas_object_image_data_set.
+        https://bugs.webkit.org/show_bug.cgi?id=79031
+
+        Reviewed by Zoltan Herczeg.
+
+        - Get the pixel data when the cairo surface is created.
+        - evas_object_image_data_get increases the reference count and returns the image buffer pointer.
+        evas_object_image_data_set decreases the reference count and when the ref count become zero,
+        the function releases the cached image inside evas engine.
+        We should make a pair between evas_object_image_data_set/get to return evas resource.
+
+        * ewk/ewk_tiled_backing_store.h:
+        (_Ewk_Tile):
+        * ewk/ewk_tiled_model.cpp:
+        (tile_account):
+        (ewk_tile_new):
+        * ewk/ewk_view_tiled.cpp:
+        (_ewk_view_tiled_render_cb):
+
 2012-02-26  Hajime Morrita  <[email protected]>
 
         Move ChromeClient::showContextMenu() to ContextMenuClient

Modified: trunk/Source/WebKit/efl/ewk/ewk_tiled_backing_store.h (108990 => 108991)


--- trunk/Source/WebKit/efl/ewk/ewk_tiled_backing_store.h	2012-02-27 15:05:01 UTC (rev 108990)
+++ trunk/Source/WebKit/efl/ewk/ewk_tiled_backing_store.h	2012-02-27 15:07:23 UTC (rev 108991)
@@ -77,7 +77,6 @@
                                    */
     int visible;                  /**< visibility counter of this tile */
     Evas_Object *image;           /**< Evas Image, the tile to be rendered */
-    uint8_t *pixels;
 };
 
 #include "ewk_tiled_matrix.h"

Modified: trunk/Source/WebKit/efl/ewk/ewk_tiled_model.cpp (108990 => 108991)


--- trunk/Source/WebKit/efl/ewk/ewk_tiled_model.cpp	2012-02-27 15:05:01 UTC (rev 108990)
+++ trunk/Source/WebKit/efl/ewk/ewk_tiled_model.cpp	2012-02-27 15:07:23 UTC (rev 108991)
@@ -221,7 +221,6 @@
 
     evas_object_image_size_set(tile->image, tile->width, tile->height);
     evas_object_image_colorspace_set(tile->image, tile->cspace);
-    tile->pixels = static_cast<uint8_t*>(evas_object_image_data_get(tile->image, true));
     _ewk_tile_account_allocated(tile);
 
     return tile;

Modified: trunk/Source/WebKit/efl/ewk/ewk_view_tiled.cpp (108990 => 108991)


--- trunk/Source/WebKit/efl/ewk/ewk_view_tiled.cpp	2012-02-27 15:05:01 UTC (rev 108990)
+++ trunk/Source/WebKit/efl/ewk/ewk_view_tiled.cpp	2012-02-27 15:07:23 UTC (rev 108991)
@@ -49,7 +49,12 @@
         return false;
     }
 
-    RefPtr<cairo_surface_t> surface = adoptRef(cairo_image_surface_create_for_data(tile->pixels, format, tile->width, tile->height, stride));
+    uint8_t* pixels = static_cast<uint8_t*>(evas_object_image_data_get(tile->image, true));
+    if (!pixels) {
+        ERR("fail to get the pixel data from the image object");
+        return false;
+    }
+    RefPtr<cairo_surface_t> surface = adoptRef(cairo_image_surface_create_for_data(pixels, format, tile->width, tile->height, stride));
     cairo_status_t status = cairo_surface_status(surface.get());
     if (status != CAIRO_STATUS_SUCCESS) {
         ERR("failed to create cairo surface: %s", cairo_status_to_string(status));
@@ -65,7 +70,9 @@
 
     cairo_translate(cairo.get(), -tile->x, -tile->y);
 
-    return ewk_view_paint_contents(priv, cairo.get(), &rect);
+    bool result = ewk_view_paint_contents(priv, cairo.get(), &rect);
+    evas_object_image_data_set(tile->image, pixels);
+    return result;
 }
 
 static void* _ewk_view_tiled_updates_process_pre(void* data, Evas_Object* ewkView)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to