Enlightenment CVS committal

Author  : doursse
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/modules/engines/xrender_xcb


Modified Files:
        evas_engine_ximage.c evas_engine_xrender.c 


Log Message:
Fix a leak, a typo and update to the new xcb api

===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/xrender_xcb/evas_engine_ximage.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- evas_engine_ximage.c        10 Oct 2006 19:15:48 -0000      1.6
+++ evas_engine_ximage.c        14 Apr 2007 22:45:39 -0000      1.7
@@ -389,6 +389,16 @@
    xcbinf->references--;
    if (xcbinf->references != 0) return;
    _xr_render_surface_free(xcbinf->mul);
+   if (xcbinf->fmt1)
+     free(xcbinf->fmt1);
+   if (xcbinf->fmt4)
+     free(xcbinf->fmt4);
+   if (xcbinf->fmt8)
+     free(xcbinf->fmt8);
+   if (xcbinf->fmt24)
+     free(xcbinf->fmt24);
+   if (xcbinf->fmt32)
+     free(xcbinf->fmt32);
    free(xcbinf);
    _image_info_list = evas_list_remove(_image_info_list, xcbinf);
 }
===================================================================
RCS file: 
/cvs/e/e17/libs/evas/src/modules/engines/xrender_xcb/evas_engine_xrender.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- evas_engine_xrender.c       4 Apr 2007 09:55:40 -0000       1.9
+++ evas_engine_xrender.c       14 Apr 2007 22:45:39 -0000      1.10
@@ -91,7 +91,13 @@
    rs->xcbinf = xcbinf;
    rs->w = w;
    rs->h = h;
-   rs->fmt = fmt;
+   rs->fmt = (xcb_render_pictforminfo_t *)malloc (sizeof 
(xcb_render_pictforminfo_t));
+   if (!rs->fmt)
+     {
+        free(rs);
+        return NULL;
+     }
+   memcpy (rs->fmt, fmt, sizeof (xcb_render_pictforminfo_t));
    rs->alpha = alpha;
    rs->depth = fmt->depth;
    rs->allocated = 1;
@@ -99,6 +105,7 @@
    xcb_create_pixmap(xcbinf->conn, fmt->depth, rs->draw, xcbinf->root, w, h);
    if (rs->draw == 0)
      {
+       free(rs->fmt);
        free(rs);
        return NULL;
      }
@@ -113,6 +120,7 @@
      {
        xcb_free_pixmap(rs->xcbinf->conn, rs->draw);
        rs->xcbinf->references--;
+       free(rs->fmt);
        free(rs);
        return NULL;
      }
@@ -124,13 +132,10 @@
 _xr_render_surface_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, 
int h, int alpha)
 {
    Xcb_Render_Surface        *rs;
-   xcb_render_pictforminfo_t *fmt;
    uint32_t                   mask;
    uint32_t                   values[3];
 
    if ((!xcbinf) || (draw == 0) || (w < 1) || (h < 1)) return NULL;
-   fmt = xcb_render_find_visual_format(xcbinf->conn, xcbinf->vis);
-   if (!fmt) return NULL;
    rs = calloc(1, sizeof(Xcb_Render_Surface));
    if (!rs) return NULL;
    rs->xcbinf = xcbinf;
@@ -148,11 +153,15 @@
 /*      rs->fmt = xcbinf->fmt1; */
 /*    free(fmt); */
 
-   rs->fmt = fmt;
-
+   rs->fmt = xcb_render_find_visual_format(xcbinf->conn, xcbinf->vis);
+   if (!rs->fmt)
+     {
+        free(rs);
+        return NULL;
+     }
    rs->alpha = alpha;
-   rs->depth = fmt->depth;
-   if (fmt->depth == 32) rs->alpha = 1;
+   rs->depth = rs->fmt->depth;
+   if (rs->fmt->depth == 32) rs->alpha = 1;
    rs->allocated = 0;
    rs->draw = draw;
    rs->xcbinf->references++;
@@ -161,10 +170,11 @@
    values[1] = 0;
    values[2] = 0;
    rs->pic = xcb_generate_id(xcbinf->conn);
-   xcb_render_create_picture(xcbinf->conn, rs->pic, rs->draw, fmt->id, mask, 
values);
+   xcb_render_create_picture(xcbinf->conn, rs->pic, rs->draw, rs->fmt->id, 
mask, values);
    if (rs->pic == 0)
      {
        rs->xcbinf->references--;
+       free(rs->fmt);
        free(rs);
        return NULL;
      }
@@ -185,7 +195,8 @@
    rs->xcbinf = xcbinf;
    rs->w = w;
    rs->h = h;
-   rs->fmt = fmt;
+   rs->fmt = (xcb_render_pictforminfo_t *)malloc (sizeof 
(xcb_render_pictforminfo_t));
+   memcpy (rs->fmt, fmt, sizeof (xcb_render_pictforminfo_t));
    rs->alpha = alpha;
    rs->depth = fmt->depth;
    if (fmt->depth == 32) rs->alpha = 1;
@@ -196,11 +207,12 @@
    values[0] = 0;
    values[1] = 0;
    values[2] = 0;
-   rs->pic = xcb_render_picture_new(xcbinf->conn);
+   rs->pic = xcb_generate_id(xcbinf->conn);
    xcb_render_create_picture(xcbinf->conn, rs->pic, rs->draw, fmt->id, mask, 
values);
    if (rs->pic == 0)
      {
        rs->xcbinf->references--;
+       free(rs->fmt);
        free(rs);
        return NULL;
      }
@@ -221,6 +233,7 @@
        _xr_image_info_free(rs->xcbinf);
        rs->xcbinf = NULL;
      }
+   free(rs->fmt);
    free(rs);
 }
 
@@ -413,7 +426,7 @@
      }
    else
      {
-        Cutout_Rect     *rects;
+        Cutout_Rects    *rects;
        Cutout_Rect     *r;
        int             i;
 



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to