efl: use new eina_cow macro to clean stuff a little.
authorCedric BAIL <cedric.bail@free.fr>
Mon, 21 Jan 2013 03:12:39 +0000 (03:12 +0000)
committerCedric BAIL <cedric.bail@free.fr>
Mon, 21 Jan 2013 03:12:39 +0000 (03:12 +0000)
SVN revision: 83026

src/lib/evas/canvas/evas_events.c
src/lib/evas/canvas/evas_object_image.c
src/lib/evas/canvas/evas_render.c

index 19972f3..cd4da4c 100644 (file)
@@ -195,7 +195,6 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event
    Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS);
    Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
    Evas_Coord_Point canvas = ev->canvas;
-   Evas_Object_Proxy_Data *proxy_write;
    Evas_Object_Protected_Data *child;
    Evas_Object *eo_child;
    Eina_List *l;
@@ -210,24 +209,22 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event
 
    ev->event_src = eo_obj;
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                ((const Eina_Cow_Data**)&src->proxy));
-
-   if (proxy_write->src_event_in)
-     proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
-
-   if (src->is_smart)
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
      {
-        proxy_write->src_event_in = _evas_event_object_list_raw_in_get(eo_e,
-                                                                    proxy_write->src_event_in,
-                                                                    evas_object_smart_members_get_direct(eo_src),
-                                                                    NULL, ev->canvas.x, ev->canvas.y, &no_rep, EINA_TRUE);
+       if (proxy_write->src_event_in)
+        proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
+
+       if (src->is_smart)
+        {
+          proxy_write->src_event_in = _evas_event_object_list_raw_in_get(eo_e,
+                                                                         proxy_write->src_event_in,
+                                                                         evas_object_smart_members_get_direct(eo_src),
+                                                                         NULL, ev->canvas.x, ev->canvas.y, &no_rep, EINA_TRUE);
+        }
+       else
+        proxy_write->src_event_in = eina_list_append(proxy_write->src_event_in, eo_src);
      }
-   else
-     proxy_write->src_event_in = eina_list_append(proxy_write->src_event_in, eo_src);
-
-   eina_cow_done(evas_object_proxy_cow,
-                 ((const Eina_Cow_Data**)&src->proxy), proxy_write);
+   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
    if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1;
 
@@ -331,8 +328,6 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event
              child = eo_data_get(eo_child, EVAS_OBJ_CLASS);
              if ((child->mouse_grabbed == 0) && (!e->delete_me))
                {
-                  Evas_Object_Proxy_Data *proxy_write;
-
                   if (child->mouse_in) continue;
                   child->mouse_in = 0;
                   if (child->delete_me || e->is_frozen) continue;
@@ -343,13 +338,9 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event
                                              &ev->cur.canvas.y,
                                              child->mouse_grabbed);
 
-                  proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                               ((const Eina_Cow_Data**) &src->proxy));
-                  proxy_write->src_event_in =
-                     eina_list_remove(proxy_write->src_event_in, eo_child);
-                  eina_cow_done(evas_object_proxy_cow,
-                                ((const Eina_Cow_Data**)&src->proxy),
-                                proxy_write);
+                 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
+                   proxy_write->src_event_in = eina_list_remove(proxy_write->src_event_in, eo_child);
+                 EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
                   evas_object_event_callback_call(eo_child, child,
                                                   EVAS_CALLBACK_MOUSE_OUT,
@@ -446,17 +437,12 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event
           }
         if (e->pointer.mouse_grabbed == 0)
           {
-             Evas_Object_Proxy_Data *proxy_write;
-
-             proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                          ((const Eina_Cow_Data**)&src->proxy));
-
-             eina_list_free(proxy_write->src_event_in);
-             proxy_write->src_event_in = ins;
-
-             eina_cow_done(evas_object_proxy_cow,
-                           ((const Eina_Cow_Data**)&src->proxy),
-                           proxy_write);
+            EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
+              {
+                eina_list_free(proxy_write->src_event_in);
+                proxy_write->src_event_in = ins;
+              }
+            EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
           }
         else
           {
@@ -782,17 +768,12 @@ _evas_event_source_multi_move_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event
         eina_list_free(copy);
         if (e->pointer.mouse_grabbed == 0)
           {
-             Evas_Object_Proxy_Data *proxy_write;
-
-             proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                          ((const Eina_Cow_Data**)&src->proxy));
-
-             eina_list_free(proxy_write->src_event_in);
-             proxy_write->src_event_in = ins;
-
-             eina_cow_done(evas_object_proxy_cow,
-                           ((const Eina_Cow_Data**)&src->proxy),
-                           proxy_write);
+            EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
+              {
+                eina_list_free(proxy_write->src_event_in);
+                proxy_write->src_event_in = ins;
+              }
+            EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
           }
         else
           eina_list_free(ins);
@@ -812,7 +793,6 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e,  Evas_Event_
    Evas_Object *eo_child;
    Eina_List *ins = NULL;
    Eina_List *l;
-   Evas_Object_Proxy_Data *proxy_write;
    Evas_Coord_Point point;
 
    if (obj->delete_me || src->delete_me || e->is_frozen) return;
@@ -854,15 +834,12 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e,  Evas_Event_
           }
      }
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                ((const Eina_Cow_Data**)&src->proxy));
-
-   eina_list_free(proxy_write->src_event_in);
-   proxy_write->src_event_in = ins;
-
-   eina_cow_done(evas_object_proxy_cow,
-                 ((const Eina_Cow_Data**)&src->proxy),
-                 proxy_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
+     {
+       eina_list_free(proxy_write->src_event_in);
+       proxy_write->src_event_in = ins;
+     }
+   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
    ev->canvas = canvas;
 }
@@ -878,7 +855,6 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_
    Evas_Object *eo_child;
    Eina_List *l;
    Eina_List *copy;
-   Evas_Object_Proxy_Data *proxy_write;
    Evas_Coord_Point point;
 
    if (obj->delete_me || src->delete_me || e->is_frozen) return;
@@ -911,14 +887,9 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e, Evas_Event_
 
    eina_list_free(copy);
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                ((const Eina_Cow_Data**)&src->proxy));
-
-   proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
-
-   eina_cow_done(evas_object_proxy_cow,
-                 ((const Eina_Cow_Data**)&src->proxy),
-                 proxy_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
+     proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
+   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
    ev->canvas = canvas;
 }
index 4156196..5fbc252 100644 (file)
@@ -589,17 +589,13 @@ _image_source_events_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
    Evas_Object_Image *o = _pd;
    Eina_Bool source_events = va_arg(*list, int);
    Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
-   Evas_Object_Proxy_Data *proxy_write;
 
    source_events = !!source_events;
    if (obj->proxy->src_events == source_events) return;
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                               ((const Eina_Cow_Data**)&obj->proxy));
-   proxy_write->src_events = source_events;
-   eina_cow_done(evas_object_proxy_cow,
-                ((const Eina_Cow_Data**)&obj->proxy),
-                proxy_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write)
+     proxy_write->src_events = source_events;
+   EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_write);
 
    if (!o->cur.source) return;
    if ((obj->proxy->src_invisible) || (!source_events)) return;
@@ -644,7 +640,6 @@ _image_source_visible_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
    Evas_Object_Protected_Data *src_obj;
    Evas_Object_Image *o = _pd;
    Eina_Bool visible = va_arg(*list, int);
-   Evas_Object_Proxy_Data *proxy_write;
 
    if (!o->cur.source) return;
 
@@ -652,13 +647,9 @@ _image_source_visible_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
    src_obj = eo_data_get(o->cur.source, EVAS_OBJ_CLASS);
    if (src_obj->proxy->src_invisible == !visible) return;
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                               ((const Eina_Cow_Data**)&src_obj->proxy));
-
-   proxy_write->src_invisible = !visible;
-
-   eina_cow_done(evas_object_proxy_cow,
-                ((const Eina_Cow_Data**)&src_obj->proxy), proxy_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src_obj->proxy, Evas_Object_Proxy_Data, proxy_write)
+     proxy_write->src_invisible = !visible;
+   EINA_COW_WRITE_END(evas_object_proxy_cow, src_obj->proxy, proxy_write);
 
    src_obj->changed_src_visible = EINA_TRUE;
    evas_object_smart_member_cache_invalidate(o->cur.source, EINA_FALSE,
@@ -2725,30 +2716,27 @@ _proxy_unset(Evas_Object *proxy)
    Evas_Object_Image *o = eo_data_get(proxy, MY_CLASS);
    Evas_Object_Protected_Data *cur_source;
    Evas_Object_Protected_Data *cur_proxy;
-   Evas_Object_Proxy_Data *proxy_source_write;
-   Evas_Object_Proxy_Data *proxy_write;
 
    if (!o->cur.source) return;
 
    cur_source = eo_data_get(o->cur.source, EVAS_OBJ_CLASS);
    cur_proxy = eo_data_get(proxy, EVAS_OBJ_CLASS);
 
-   proxy_source_write = eina_cow_write(evas_object_proxy_cow,
-                               ((const Eina_Cow_Data**)&cur_source->proxy));
-   proxy_source_write->proxies = eina_list_remove(proxy_source_write->proxies,
-                                                 proxy);
-
-   if (proxy_source_write->src_invisible)
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, cur_source->proxy, Evas_Object_Proxy_Data, proxy_source_write)
      {
-        proxy_source_write->src_invisible = EINA_FALSE;
-        cur_source->changed_src_visible = EINA_TRUE;
-        evas_object_change(o->cur.source, cur_source);
-        evas_object_smart_member_cache_invalidate(o->cur.source, EINA_FALSE,
-                                                  EINA_FALSE, EINA_TRUE);
+       proxy_source_write->proxies = eina_list_remove(proxy_source_write->proxies,
+                                                     proxy);
+       
+       if (proxy_source_write->src_invisible)
+        {
+          proxy_source_write->src_invisible = EINA_FALSE;
+          cur_source->changed_src_visible = EINA_TRUE;
+          evas_object_change(o->cur.source, cur_source);
+          evas_object_smart_member_cache_invalidate(o->cur.source, EINA_FALSE,
+                                                    EINA_FALSE, EINA_TRUE);
+        }
      }
-   eina_cow_done(evas_object_proxy_cow,
-                ((const Eina_Cow_Data**)&cur_source->proxy),
-                proxy_source_write);
+   EINA_COW_WRITE_END(evas_object_proxy_cow, cur_source->proxy, proxy_source_write);
 
    o->cur.source = NULL;
 
@@ -2758,12 +2746,9 @@ _proxy_unset(Evas_Object *proxy)
         o->cur.defmap = NULL;
      }
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                               ((const Eina_Cow_Data**)&cur_proxy->proxy));
-   proxy_write->is_proxy = EINA_FALSE;
-   eina_cow_done(evas_object_proxy_cow,
-                ((const Eina_Cow_Data**)&cur_proxy->proxy),
-                proxy_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, cur_source->proxy, Evas_Object_Proxy_Data, proxy_write)
+     proxy_write->is_proxy = EINA_FALSE;
+   EINA_COW_WRITE_END(evas_object_proxy_cow, cur_proxy->proxy, proxy_write);
 }
 
 static void
@@ -2772,31 +2757,23 @@ _proxy_set(Evas_Object *eo_proxy, Evas_Object *eo_src)
    Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS);
    Evas_Object_Protected_Data *proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS);
    Evas_Object_Image *o = eo_data_get(eo_proxy, MY_CLASS);
-   Evas_Object_Proxy_Data *proxy_write;
-   Evas_Object_Proxy_Data *proxy_src_write;
 
    evas_object_image_file_set(eo_proxy, NULL, NULL);
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                               ((const Eina_Cow_Data**)&proxy->proxy));
-   proxy_write->is_proxy = EINA_TRUE;
-   eina_cow_done(evas_object_proxy_cow,
-                ((const Eina_Cow_Data**)&proxy->proxy),
-                proxy_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, proxy->proxy, Evas_Object_Proxy_Data, proxy_write)
+     proxy_write->is_proxy = EINA_TRUE;
+   EINA_COW_WRITE_END(evas_object_proxy_cow, proxy->proxy, proxy_write);
 
    o->cur.source = eo_src;
    o->load_error = EVAS_LOAD_ERROR_NONE;
 
-   proxy_src_write = eina_cow_write(evas_object_proxy_cow,
-                              ((const Eina_Cow_Data**)&src->proxy));
-
-   proxy_src_write->proxies = eina_list_append(proxy_src_write->proxies,
-                                              eo_proxy);
-   proxy_src_write->redraw = EINA_TRUE;
-
-   eina_cow_done(evas_object_proxy_cow,
-                ((const Eina_Cow_Data**)&src->proxy),
-                proxy_src_write);
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_src_write)
+     {
+        proxy_src_write->proxies = eina_list_append(proxy_src_write->proxies,
+                                                    eo_proxy);
+        proxy_src_write->redraw = EINA_TRUE;
+     }
+   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_src_write);
 }
 
 /* Some moron just set a proxy on a proxy.
@@ -2873,7 +2850,6 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Eina_Bool do_async)
 {
    Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
    Evas_Object_Protected_Data *source;
-   Evas_Object_Proxy_Data *proxy_write;
    void *ctx;
 /*   Evas_Object *eo_obj2, *clip;*/
    int w, h;
@@ -2884,52 +2860,51 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Eina_Bool do_async)
    w = source->cur.geometry.w;
    h = source->cur.geometry.h;
 
-   proxy_write = eina_cow_write(evas_object_proxy_cow,
-                               (const Eina_Cow_Data**)&source->proxy);
-   
-   proxy_write->redraw = EINA_FALSE;
-
-   /* We need to redraw surface then */
-   if ((proxy_write->surface) &&
-       ((proxy_write->w != w) || (proxy_write->h != h)))
+   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, source->proxy, Evas_Object_Proxy_Data, proxy_write)
      {
-        e->engine.func->image_map_surface_free(e->engine.data.output,
-                                               proxy_write->surface);
-        proxy_write->surface = NULL;
-     }
+        proxy_write->redraw = EINA_FALSE;
 
-   /* FIXME: Hardcoded alpha 'on' */
-   /* FIXME (cont): Should see if the object has alpha */
-   if (!proxy_write->surface)
-     {
-        proxy_write->surface = e->engine.func->image_map_surface_new
-           (e->engine.data.output, w, h, 1);
-        if (!proxy_write->surface) goto end;
-        proxy_write->w = w;
-        proxy_write->h = h;
-     }
+        /* We need to redraw surface then */
+        if ((proxy_write->surface) &&
+            ((proxy_write->w != w) || (proxy_write->h != h)))
+          {
+             e->engine.func->image_map_surface_free(e->engine.data.output,
+                                                    proxy_write->surface);
+             proxy_write->surface = NULL;
+          }
 
-   ctx = e->engine.func->context_new(e->engine.data.output);
-   e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 0, 0, 0);
-   e->engine.func->context_render_op_set(e->engine.data.output, ctx, EVAS_RENDER_COPY);
-   e->engine.func->rectangle_draw(e->engine.data.output, ctx,
-                                  proxy_write->surface, 0, 0, w, h,
-                                  do_async);
-   e->engine.func->context_free(e->engine.data.output, ctx);
+        /* FIXME: Hardcoded alpha 'on' */
+        /* FIXME (cont): Should see if the object has alpha */
+        if (!proxy_write->surface)
+          {
+             proxy_write->surface = e->engine.func->image_map_surface_new
+               (e->engine.data.output, w, h, 1);
+             if (!proxy_write->surface) goto end;
+             proxy_write->w = w;
+             proxy_write->h = h;
+          }
 
-   ctx = e->engine.func->context_new(e->engine.data.output);
-   evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface,
-                      -source->cur.geometry.x,
-                      -source->cur.geometry.y,
-                      1, 0, 0, e->output.w, e->output.h, EINA_TRUE
+        ctx = e->engine.func->context_new(e->engine.data.output);
+        e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 0, 0, 0);
+        e->engine.func->context_render_op_set(e->engine.data.output, ctx, EVAS_RENDER_COPY);
+        e->engine.func->rectangle_draw(e->engine.data.output, ctx,
+                                       proxy_write->surface, 0, 0, w, h,
+                                       do_async);
+        e->engine.func->context_free(e->engine.data.output, ctx);
+
+        ctx = e->engine.func->context_new(e->engine.data.output);
+        evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface,
+                           -source->cur.geometry.x,
+                           -source->cur.geometry.y,
+                           1, 0, 0, e->output.w, e->output.h, EINA_TRUE
 #ifdef REND_DBG
-                      , 1
+                           , 1
 #endif
-                      , do_async);
+                           , do_async);
 
-   e->engine.func->context_free(e->engine.data.output, ctx);
-   proxy_write->surface = e->engine.func->image_dirty_region
-      (e->engine.data.output, proxy_write->surface, 0, 0, w, h);
+        e->engine.func->context_free(e->engine.data.output, ctx);
+        proxy_write->surface = e->engine.func->image_dirty_region
+          (e->engine.data.output, proxy_write->surface, 0, 0, w, h);
 /*   
    ctx = e->engine.func->context_new(e->engine.data.output);
    if (eo_isa(source, EVAS_OBJ_SMART_CLASS))
@@ -2957,11 +2932,10 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Eina_Bool do_async)
    e->engine.func->context_free(e->engine.data.output, ctx);
    proxy_write->surface = e->engine.func->image_dirty_region
       (e->engine.data.output, proxy_write->surface, 0, 0, w, h);
- */
+*/
+     }
  end:
-   eina_cow_done(evas_object_proxy_cow,
-                (const Eina_Cow_Data**)&source->proxy,
-                proxy_write);
+   EINA_COW_WRITE_END(evas_object_proxy_cow, source->proxy, proxy_write);
 }
 
 static void
index ef62471..8d9b873 100644 (file)
@@ -277,16 +277,12 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
              EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy)
                {
                 Evas_Object_Protected_Data *proxy;
-                Evas_Object_Proxy_Data *proxy_write;
 
                 proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS);
 
-                proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                             ((const Eina_Cow_Data**)&proxy->proxy));
-                proxy_write->redraw = EINA_TRUE;
-                eina_cow_done(evas_object_proxy_cow,
-                              ((const Eina_Cow_Data**)&proxy->proxy),
-                              proxy_write);
+                EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, proxy->proxy, Evas_Object_Proxy_Data, proxy_write)
+                  proxy_write->redraw = EINA_TRUE;
+                EINA_COW_WRITE_END(evas_object_proxy_cow, proxy->proxy, proxy_write);
                }
           }
      }
@@ -306,14 +302,9 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
                _evas_render_prev_cur_clip_cache_add(e, obj);
              if (obj->proxy->proxies)
                {
-                  Evas_Object_Proxy_Data *proxy_write;
-
-                  proxy_write = eina_cow_write(evas_object_proxy_cow,
-                                               ((const Eina_Cow_Data**)&obj->proxy));
-                  proxy_write->redraw = EINA_TRUE;
-                  eina_cow_done(evas_object_proxy_cow,
-                                ((const Eina_Cow_Data**)&obj->proxy),
-                                proxy_write);
+                 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write)
+                   proxy_write->redraw = EINA_TRUE;
+                 EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_write);
 
                   EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy)
                     {