evas-drm: Call framebuffer_set earlier in the process so that the screen gets
authorChris Michael <cp.michael@samsung.com>
Wed, 12 Feb 2014 07:30:58 +0000 (07:30 +0000)
committerChris Michael <cp.michael@samsung.com>
Fri, 28 Feb 2014 13:10:21 +0000 (13:10 +0000)
updated sooner.

@bugfix: set framebuffer on crtc earlier in process
@bugfix: Set the rendered image's alpha flag to be equal to the output buffer's

Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/modules/evas/engines/drm/evas_outbuf.c

index 256f1b6..b4941f9 100644 (file)
@@ -33,7 +33,7 @@ _evas_outbuf_buffer_new(Outbuf *ob, Buffer *buffer)
         return EINA_FALSE;
      }
 
-   /* evas_drm_outbuf_framebuffer_set(ob, buffer); */
+   evas_drm_outbuf_framebuffer_set(ob, buffer);
 
    return EINA_TRUE;
 }
@@ -62,7 +62,8 @@ _evas_outbuf_buffer_put(Outbuf *ob, Buffer *buffer, Eina_Rectangle *rects, unsig
 
    if (ob->priv.sent != buffer)
      {
-        if (!buffer->valid) evas_drm_outbuf_framebuffer_set(ob, buffer);
+        /* DBG("Send New Buffer: %d", buffer->fb); */
+        /* if (!buffer->valid) evas_drm_outbuf_framebuffer_set(ob, buffer); */
         if (!evas_drm_framebuffer_send(ob, buffer, rects, count))
           ERR("Could not send buffer");
      }
@@ -300,7 +301,8 @@ evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, i
              return NULL;
           }
 
-        img->cache_entry.flags.alpha |= ob->destination_alpha;
+        img->cache_entry.flags.alpha = ob->destination_alpha;
+//        img->cache_entry.flags.alpha |= ob->destination_alpha;
 
 #ifdef EVAS_CSERVE2
         if (evas_cserve2_use_get())
@@ -318,6 +320,7 @@ evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, i
         if (cy) *cy = 0;
         if (cw) *cw = w;
         if (ch) *ch = h;
+
         return img;
      }