forked from len0rd/rockbox
1bit and 2bit LCD drivers: Low-level bit handling optimisations.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10225 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ed00b17305
commit
393f31cc43
5 changed files with 76 additions and 32 deletions
|
@ -152,7 +152,10 @@ static void fgblock(unsigned char *address, unsigned mask, unsigned bits)
|
|||
|
||||
static void solidblock(unsigned char *address, unsigned mask, unsigned bits)
|
||||
{
|
||||
*address = (*address & ~mask) | (bits & mask);
|
||||
unsigned data = *(char *)address;
|
||||
|
||||
bits ^= data;
|
||||
*address = data ^ (bits & mask);
|
||||
}
|
||||
|
||||
static void flipinvblock(unsigned char *address, unsigned mask, unsigned bits)
|
||||
|
@ -172,7 +175,10 @@ static void fginvblock(unsigned char *address, unsigned mask, unsigned bits)
|
|||
|
||||
static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits)
|
||||
{
|
||||
*address = (*address & ~mask) | (~bits & mask);
|
||||
unsigned data = *(char *)address;
|
||||
|
||||
bits = ~bits ^ data;
|
||||
*address = data ^ (bits & mask);
|
||||
}
|
||||
|
||||
lcd_blockfunc_type* pgfx_blockfuncs[8] = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue