aboutsummaryrefslogtreecommitdiffstats
path: root/src/gdriver/gdriver_gdriver.c
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-09-25 17:43:43 +1000
committerinmarket <andrewh@inmarket.com.au>2014-09-25 17:45:14 +1000
commit0e73d65e58777f77882bc6dbbfd0e3e3aa5860b2 (patch)
treec5fddc5391c166a064533c8353d88f15ae56718c /src/gdriver/gdriver_gdriver.c
parent9f720b1f122ffc7986cc467ef1a7607000c6b491 (diff)
downloaduGFX-0e73d65e58777f77882bc6dbbfd0e3e3aa5860b2.tar.gz
uGFX-0e73d65e58777f77882bc6dbbfd0e3e3aa5860b2.tar.bz2
uGFX-0e73d65e58777f77882bc6dbbfd0e3e3aa5860b2.zip
Additional GDriver call
Diffstat (limited to 'src/gdriver/gdriver_gdriver.c')
-rw-r--r--src/gdriver/gdriver_gdriver.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/gdriver/gdriver_gdriver.c b/src/gdriver/gdriver_gdriver.c
index 0a53aaf7..3c17fca0 100644
--- a/src/gdriver/gdriver_gdriver.c
+++ b/src/gdriver/gdriver_gdriver.c
@@ -11,19 +11,13 @@
#include "sys_defs.h"
+#include <string.h> // For memset
+
// Define the tables to hold the driver instances.
static GDriver *dhead;
// The system initialization.
void _gdriverInit(void) {
-
- // Drivers not loaded yet
- // GINPUT_NEED_MOUSE
- // GINPUT_NEED_DIAL
- // GINPUT_NEED_TOGGLE
- // GINPUT_NEED_KEYBOARD
- // GINPUT_NEED_STRING
- // GFX_USE_GBLOCK
}
// The system de-initialization.
@@ -51,7 +45,7 @@ GDriver *gdriverRegister(const GDriverVMT *vmt) {
pd = gfxAlloc(vmt->objsize);
if (!pd)
return 0;
- pd->driverchain = 0;
+ memset(pd, 0, vmt->objsize);
pd->vmt = vmt;
if (vmt->init && !vmt->init(pd, dinstance, sinstance)) {
gfxFree(pd);
@@ -136,4 +130,19 @@ GDriver *gdriverGetNext(uint16_t type, GDriver *driver) {
return driver;
}
+unsigned gdriverGetDriverInstanceNumber(GDriver *driver) {
+ GDriver *pd;
+ unsigned instance;
+
+ // Loop to find the system instance
+ instance = 0;
+ for(pd = dhead; pd; pd = pd->driverchain) {
+ if (pd == driver)
+ return instance;
+ if (pd->vmt->type == driver->vmt->type)
+ instance++;
+ }
+ return (unsigned)-1;
+}
+
#endif /* GFX_USE_GDRIVER */