render: Call begin/end_access when accessing shm buffer
authorTaekyun Kim <tkq.kim@samsung.com>
Tue, 20 Oct 2015 08:56:04 +0000 (17:56 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Tue, 20 Oct 2015 08:56:58 +0000 (17:56 +0900)
Change-Id: I1d55ff55603c2db2b4b1556842faffefee6dec87

src/lib/render/pixman-renderer.c

index b550956..028a93b 100644 (file)
@@ -20,11 +20,12 @@ struct pixman_renderer
 
 struct pixman_surface_state
 {
-    pixman_renderer_t  *renderer;
+    pixman_renderer_t      *renderer;
 
-    pepper_surface_t   *surface;
-    int                 buffer_width, buffer_height;
-    pixman_image_t     *image;
+    pepper_surface_t       *surface;
+    struct wl_shm_buffer   *shm_buffer;
+    int                     buffer_width, buffer_height;
+    pixman_image_t         *image;
 
     pepper_event_listener_t *buffer_destroy_listener;
     pepper_event_listener_t *surface_destroy_listener;
@@ -147,6 +148,7 @@ surface_state_attach_shm(pixman_surface_state_t *state, pepper_buffer_t *buffer)
     state->buffer_width = w;
     state->buffer_height = h;
     state->image = image;
+    state->shm_buffer = shm_buffer;
 
     return PEPPER_TRUE;;
 }
@@ -283,12 +285,14 @@ repaint_view(pepper_renderer_t *renderer, pepper_render_item_t *node, pixman_reg
         pixman_image_set_transform(ps->image, &trans);
         pixman_image_set_filter(ps->image, filter, NULL, 0);
 
+        wl_shm_buffer_begin_access(ps->shm_buffer);
         pixman_image_composite32(PIXMAN_OP_OVER, ps->image, NULL, target->image,
                                  0, 0, /* src_x, src_y */
                                  0, 0, /* mask_x, mask_y */
                                  0, 0, /* dest_x, dest_y */
                                  pixman_image_get_width(target->image),
                                  pixman_image_get_height(target->image));
+        wl_shm_buffer_end_access(ps->shm_buffer);
     }
 
     pixman_region32_fini(&repaint);