summaryrefslogtreecommitdiff
path: root/sys/src/9/omap
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-01-30 18:22:52 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2019-01-30 18:22:52 +0100
commitcefc849a9521c9d5ba85d5aa88526d0f4b059db9 (patch)
treeb5f42fb9651de5734abc2e23647ca9ec7ea49c25 /sys/src/9/omap
parent8e1218acebcb87bcf16e6bca5b5f213ff2a1df3a (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.c11
-rw-r--r--sys/src/9/omap/screen.h2
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);