diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-01-30 18:22:52 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-01-30 18:22:52 +0100 |
commit | cefc849a9521c9d5ba85d5aa88526d0f4b059db9 (patch) | |
tree | b5f42fb9651de5734abc2e23647ca9ec7ea49c25 /sys/src/9/omap | |
parent | 8e1218acebcb87bcf16e6bca5b5f213ff2a1df3a (diff) |
devdraw: get rid of softscreen==0xa110c hack and make attachscreen() return Memdata*
all screen implementations use a Memimage* internally
for the framebuffer, so we can return a shared reference
to its Memdata structure in attachscreen() instead of
a framebuffer data pointer.
this eleminates the softscreen == 0xa110c hack as we
always use shared Memdata* now.
Diffstat (limited to 'sys/src/9/omap')
-rw-r--r-- | sys/src/9/omap/screen.c | 11 | ||||
-rw-r--r-- | sys/src/9/omap/screen.h | 2 |
2 files changed, 9 insertions, 4 deletions
diff --git a/sys/src/9/omap/screen.c b/sys/src/9/omap/screen.c index 7d36a0fe4..0a4e005c5 100644 --- a/sys/src/9/omap/screen.c +++ b/sys/src/9/omap/screen.c @@ -436,15 +436,20 @@ flushmemscreen(Rectangle r) /* * export screen to devdraw */ -uchar* -attachscreen(Rectangle *r, ulong *chan, int *d, int *width, int *softscreen) +Memdata* +attachscreen(Rectangle *r, ulong *chan, int* d, int *width, int *softscreen) { + if(gscreen == nil) + return nil; + *r = gscreen->r; *d = gscreen->depth; *chan = gscreen->chan; *width = gscreen->width; *softscreen = (landscape == 0); - return (uchar *)gscreen->data->bdata; + + gscreen->data->ref++; + return gscreen->data; } void diff --git a/sys/src/9/omap/screen.h b/sys/src/9/omap/screen.h index 882428056..d06f83863 100644 --- a/sys/src/9/omap/screen.h +++ b/sys/src/9/omap/screen.h @@ -23,7 +23,7 @@ extern void mouseresize(void); extern void mouseredraw(void); /* screen.c */ -extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*); +extern Memdata* attachscreen(Rectangle*, ulong*, int*, int*, int*); extern void flushmemscreen(Rectangle); extern void cursoron(void); extern void cursoroff(void); |