summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/icon.c5
-rw-r--r--apps/gui/skin_engine/skin_parser.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/apps/gui/icon.c b/apps/gui/icon.c
index 4c006f9..d24d8bb 100644
--- a/apps/gui/icon.c
+++ b/apps/gui/icon.c
@@ -189,7 +189,7 @@ static void load_icons(const char* filename, enum Iconset iconset,
enum screen_type screen)
{
int size_read;
- int bmpformat = (FORMAT_NATIVE|FORMAT_DITHER);
+ int bmpformat = (FORMAT_NATIVE|FORMAT_DITHER|FORMAT_TRANSPARENT);
struct iconset *ic = &iconsets[iconset][screen];
int fd;
@@ -217,6 +217,9 @@ static void load_icons(const char* filename, enum Iconset iconset,
size_read = read_bmp_fd(fd, &ic->bmp, buf_size, bmpformat, NULL);
ic->handle_locked = 0;
+ /* free unused alpha channel, if any */
+ core_shrink(ic->handle, ic->bmp.data, size_read);
+
if (size_read <= 0)
ic->handle = core_free(ic->handle);
else
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index d207a1f..8eef1de 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1577,6 +1577,8 @@ static int load_skin_bmp(struct wps_data *wps_data, struct bitmap *bitmap, char*
close(fd);
if (ret > 0)
{
+ /* free unused alpha channel, if any */
+ core_shrink(handle, core_get_data(handle), ret);
return handle;
}
else