]> Dogcows Code - chaz/openbox/blobdiff - obrender/image.c
default for menu overlap
[chaz/openbox] / obrender / image.c
index 671b7aeeb294f0c09beffad2121017c443bc3b46..bb65e3c038e9141cd5a1b36b016fa1d285638564 100644 (file)
@@ -50,7 +50,7 @@ static void RrImagePicFree(RrImagePic *pic)
     if (pic) {
         g_free(pic->data);
         g_free(pic->name);
-        g_free(pic);
+        g_slice_free(RrImagePic, pic);
     }
 }
 
@@ -235,7 +235,7 @@ static RrImagePic* ResizeImage(RrPixel32 *src,
         }
     }
 
-    pic = g_new(RrImagePic, 1);
+    pic = g_slice_new(RrImagePic);
     RrImagePicInit(pic, NULL, dstW, dstH, dststart);
 
     return pic;
@@ -335,7 +335,7 @@ RrImage* RrImageNew(RrImageCache *cache)
 
     g_assert(cache != NULL);
 
-    self = g_new0(RrImage, 1);
+    self = g_slice_new0(RrImage);
     self->ref = 1;
     self->cache = cache;
     return self;
@@ -369,7 +369,7 @@ void RrImageUnref(RrImage *self)
             RemovePicture(self, &self->original, 0, &self->n_original);
         while (self->n_resized > 0)
             RemovePicture(self, &self->resized, 0, &self->n_resized);
-        g_free(self);
+        g_slice_free(RrImage, self);
     }
 }
 
@@ -399,7 +399,7 @@ static void AddPictureFromData(RrImage *self, const char *name,
         }
 
     /* add the new picture */
-    pic = g_new(RrImagePic, 1);
+    pic = g_slice_new(RrImagePic);
     RrImagePicInit(pic, name, w, h, g_memdup(data, w*h*sizeof(RrPixel32)));
     AddPicture(self, &self->original, &self->n_original, pic);
 }
@@ -532,7 +532,9 @@ void RrImageDrawImage(RrPixel32 *target, RrTextureImage *img,
 
             /* our size difference metric.. */
             wdiff = self->original[i]->width - area->width;
+            if (wdiff < 0) wdiff *= 2; /* prefer scaling down than up */
             hdiff = self->original[i]->height - area->height;
+            if (hdiff < 0) hdiff *= 2; /* prefer scaling down than up */
             diff = (wdiff * wdiff) + (hdiff * hdiff);
 
             /* find the smallest difference */
This page took 0.023434 seconds and 4 git commands to generate.