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