summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/playergfx.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib/playergfx.c')
-rw-r--r--apps/plugins/lib/playergfx.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/apps/plugins/lib/playergfx.c b/apps/plugins/lib/playergfx.c
index d7e1ce26e8..b6e7ccfc64 100644
--- a/apps/plugins/lib/playergfx.c
+++ b/apps/plugins/lib/playergfx.c
@@ -152,7 +152,10 @@ static void fgblock(unsigned char *address, unsigned mask, unsigned bits)
152 152
153static void solidblock(unsigned char *address, unsigned mask, unsigned bits) 153static void solidblock(unsigned char *address, unsigned mask, unsigned bits)
154{ 154{
155 *address = (*address & ~mask) | (bits & mask); 155 unsigned data = *(char *)address;
156
157 bits ^= data;
158 *address = data ^ (bits & mask);
156} 159}
157 160
158static void flipinvblock(unsigned char *address, unsigned mask, unsigned bits) 161static void flipinvblock(unsigned char *address, unsigned mask, unsigned bits)
@@ -172,7 +175,10 @@ static void fginvblock(unsigned char *address, unsigned mask, unsigned bits)
172 175
173static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits) 176static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits)
174{ 177{
175 *address = (*address & ~mask) | (~bits & mask); 178 unsigned data = *(char *)address;
179
180 bits = ~bits ^ data;
181 *address = data ^ (bits & mask);
176} 182}
177 183
178lcd_blockfunc_type* pgfx_blockfuncs[8] = { 184lcd_blockfunc_type* pgfx_blockfuncs[8] = {