some cleanups
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 7 Jan 2010 13:36:45 +0000 (13:36 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 7 Jan 2010 13:36:45 +0000 (13:36 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@44945 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_x/xlib/ecore_x_image.c

index 3b412f0..57a17bd 100644 (file)
@@ -80,17 +80,17 @@ _ecore_x_image_shm_check(void)
    if (_ecore_x_image_err)
      {
         XShmDetach(_ecore_x_disp, &shminfo);
+        XDestroyImage(xim);
         shmdt(shminfo.shmaddr); 
         shmctl(shminfo.shmid, IPC_RMID, 0);
-        XDestroyImage(xim);
         _ecore_x_image_shm_can = 0;
         return;
      }
    
    XShmDetach(_ecore_x_disp, &shminfo);
+   XDestroyImage(xim);
    shmdt(shminfo.shmaddr);
    shmctl(shminfo.shmid, IPC_RMID, 0);
-   XDestroyImage(xim);
    
    _ecore_x_image_shm_can = 1;
 }
@@ -128,16 +128,17 @@ ecore_x_image_free(Ecore_X_Image *im)
 {
    if (im->shm)
      {
-        XShmDetach(_ecore_x_disp, &(im->shminfo));
-        shmdt(im->shminfo.shmaddr);
-        shmctl(im->shminfo.shmid, IPC_RMID, 0);
+        if (im->xim)
+          {
+             XShmDetach(_ecore_x_disp, &(im->shminfo));
+             XDestroyImage(im->xim);
+             shmdt(im->shminfo.shmaddr);
+             shmctl(im->shminfo.shmid, IPC_RMID, 0);
+          }
      }
    else
      {
         if (im->xim) free(im->xim->data);
-     }
-   if (im->xim)
-     {
         im->xim->data = NULL;
         XDestroyImage(im->xim);
      }