aboutsummaryrefslogtreecommitdiffstats
path: root/src/gdriver
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2015-08-18 07:39:33 +1000
committerinmarket <andrewh@inmarket.com.au>2015-08-18 07:40:14 +1000
commit682503e672d5397da22ad2ecf9a8c08915e062be (patch)
treec1a4187f4fa3cc382256d0c5298e6f19ecfa8f44 /src/gdriver
parent9a410b29e3929d1e1f7a4e040f4f025cdc5b42a4 (diff)
downloaduGFX-682503e672d5397da22ad2ecf9a8c08915e062be.tar.gz
uGFX-682503e672d5397da22ad2ecf9a8c08915e062be.tar.bz2
uGFX-682503e672d5397da22ad2ecf9a8c08915e062be.zip
Another fix to gdriver
Diffstat (limited to 'src/gdriver')
-rw-r--r--src/gdriver/gdriver.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/gdriver/gdriver.c b/src/gdriver/gdriver.c
index c90ad8e3..116abd32 100644
--- a/src/gdriver/gdriver.c
+++ b/src/gdriver/gdriver.c
@@ -52,13 +52,12 @@ GDriver *gdriverRegister(const GDriverVMT *vmt, void *param) {
return 0;
}
- // Add it to the driver chain
- if (dhead) {
+ // Add it to the driver chain (at the end)
+ if (dhead)
dtail->driverchain = pd;
- dtail = pd;
- } else {
- dhead = dtail = pd;
- }
+ else
+ dhead = pd;
+ dtail = pd;
// Do the post init
if (vmt->postinit)
@@ -81,6 +80,8 @@ void gdriverUnRegister(GDriver *driver) {
for(pd = dhead; pd->driverchain; pd = pd->driverchain) {
if (pd->driverchain == driver) {
pd->driverchain = driver->driverchain;
+ if (!pd->driverchain)
+ dtail = pd;
break;
}
}