X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=obrender%2Fimage.c;h=bb65e3c038e9141cd5a1b36b016fa1d285638564;hb=f011ce4c994830079a72bfe522ea0c0ff1185ffd;hp=671b7aeeb294f0c09beffad2121017c443bc3b46;hpb=567fd15eebdd44e50cef140419dbf7a336708109;p=chaz%2Fopenbox diff --git a/obrender/image.c b/obrender/image.c index 671b7aee..bb65e3c0 100644 --- a/obrender/image.c +++ b/obrender/image.c @@ -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 */