\begin{Verbatim}[commandchars=\\\{\}] \PY{g+gh}{diff \PYZhy{}\PYZhy{}git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c} \PY{g+gh}{index c503ad6a6..722122b66 100644} \PY{g+gd}{\PYZhy{}\PYZhy{}\PYZhy{} a/hw/kdrive/ephyr/ephyr.c} \PY{g+gi}{+++ b/hw/kdrive/ephyr/ephyr.c} \PY{g+gu}{@@ \PYZhy{}298,7 +298,7 @@ ephyrShadowUpdate(ScreenPtr pScreen, shadowBufPtr pBuf)} \PY{+w}{ } * pBuf\PYZhy{}\PYZgt{}pDamage regions \PY{+w}{ } */ \PY{+w}{ } shadowUpdateRotatePacked(pScreen, pBuf); \PY{g+gd}{\PYZhy{} hostx\PYZus{}paint\PYZus{}rect(screen, 0, 0, 0, 0, screen\PYZhy{}\PYZgt{}width, screen\PYZhy{}\PYZgt{}height);} \PY{g+gi}{+ hostx\PYZus{}paint\PYZus{}rect(screen, 0, 0, 0, 0, screen\PYZhy{}\PYZgt{}width*SCALE, screen\PYZhy{}\PYZgt{}height*SCALE);} \PY{+w}{ }\PYZcb{} \PY{+w}{ } \PY{+w}{ }static void \PY{g+gu}{@@ \PYZhy{}918,8 +918,8 @@ ephyrProcessMouseMotion(xcb\PYZus{}generic\PYZus{}event\PYZus{}t *xev)} \PY{+w}{ } int x = 0, y = 0; \PY{+w}{ } \PY{+w}{ } EPHYR\PYZus{}LOG(\PYZdq{}enqueuing mouse motion:\PYZpc{}d\PYZbs{}n\PYZdq{}, screen\PYZhy{}\PYZgt{}pScreen\PYZhy{}\PYZgt{}myNum); \PY{g+gd}{\PYZhy{} x = motion\PYZhy{}\PYZgt{}event\PYZus{}x;} \PY{g+gd}{\PYZhy{} y = motion\PYZhy{}\PYZgt{}event\PYZus{}y;} \PY{g+gi}{+ x = motion\PYZhy{}\PYZgt{}event\PYZus{}x / SCALE;} \PY{g+gi}{+ y = motion\PYZhy{}\PYZgt{}event\PYZus{}y / SCALE;} \PY{+w}{ } EPHYR\PYZus{}LOG(\PYZdq{}initial (x,y):(\PYZpc{}d,\PYZpc{}d)\PYZbs{}n\PYZdq{}, x, y); \PY{+w}{ } \PY{+w}{ } /* convert coords into desktop\PYZhy{}wide coordinates. \PY{g+gh}{diff \PYZhy{}\PYZhy{}git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c} \PY{g+gh}{index a5b2e344e..07868a38f 100644} \PY{g+gd}{\PYZhy{}\PYZhy{}\PYZhy{} a/hw/kdrive/ephyr/hostx.c} \PY{g+gi}{+++ b/hw/kdrive/ephyr/hostx.c} \PY{g+gu}{@@ \PYZhy{}618,8 +618,8 @@ hostx\PYZus{}init(void)} \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}win, \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}win\PYZus{}pre\PYZus{}existing, \PY{+w}{ } 0,0, \PY{g+gd}{\PYZhy{} scrpriv\PYZhy{}\PYZgt{}win\PYZus{}width,} \PY{g+gd}{\PYZhy{} scrpriv\PYZhy{}\PYZgt{}win\PYZus{}height,} \PY{g+gi}{+ scrpriv\PYZhy{}\PYZgt{}win\PYZus{}width * SCALE,} \PY{g+gi}{+ scrpriv\PYZhy{}\PYZgt{}win\PYZus{}height * SCALE,} \PY{+w}{ } 0, \PY{+w}{ } XCB\PYZus{}WINDOW\PYZus{}CLASS\PYZus{}COPY\PYZus{}FROM\PYZus{}PARENT, \PY{+w}{ } HostX.visual\PYZhy{}\PYZgt{}visual\PYZus{}id, \PY{g+gu}{@@ \PYZhy{}904,15 +904,15 @@ hostx\PYZus{}screen\PYZus{}init(KdScreenInfo *screen,} \PY{+w}{ } \PY{+w}{ } if (!ephyr\PYZus{}glamor \PYZam{}\PYZam{} HostX.have\PYZus{}shm) \PYZob{} \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}ximg = xcb\PYZus{}image\PYZus{}create\PYZus{}native(HostX.conn, \PY{g+gd}{\PYZhy{} width,} \PY{g+gd}{\PYZhy{} buffer\PYZus{}height,} \PY{g+gi}{+ width * SCALE,} \PY{g+gi}{+ buffer\PYZus{}height * SCALE,} \PY{+w}{ } XCB\PYZus{}IMAGE\PYZus{}FORMAT\PYZus{}Z\PYZus{}PIXMAP, \PY{+w}{ } HostX.depth, \PY{+w}{ } NULL, \PY{+w}{ } \PYZti{}0, \PY{+w}{ } NULL); \PY{+w}{ } \PY{g+gd}{\PYZhy{} scrpriv\PYZhy{}\PYZgt{}shmsize = scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}stride * buffer\PYZus{}height;} \PY{g+gi}{+ scrpriv\PYZhy{}\PYZgt{}shmsize = scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}stride * buffer\PYZus{}height * SCALE;} \PY{+w}{ } if (!hostx\PYZus{}create\PYZus{}shm\PYZus{}segment(\PYZam{}scrpriv\PYZhy{}\PYZgt{}shminfo, \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}shmsize)) \PYZob{} \PY{+w}{ } EPHYR\PYZus{}DBG \PY{g+gu}{@@ \PYZhy{}931,8 +931,8 @@ hostx\PYZus{}screen\PYZus{}init(KdScreenInfo *screen,} \PY{+w}{ } EPHYR\PYZus{}DBG(\PYZdq{}Creating image \PYZpc{}dx\PYZpc{}d for screen scrpriv=\PYZpc{}p\PYZbs{}n\PYZdq{}, \PY{+w}{ } width, buffer\PYZus{}height, scrpriv); \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}ximg = xcb\PYZus{}image\PYZus{}create\PYZus{}native(HostX.conn, \PY{g+gd}{\PYZhy{} width,} \PY{g+gd}{\PYZhy{} buffer\PYZus{}height,} \PY{g+gi}{+ width * SCALE,} \PY{g+gi}{+ buffer\PYZus{}height * SCALE,} \PY{+w}{ } XCB\PYZus{}IMAGE\PYZus{}FORMAT\PYZus{}Z\PYZus{}PIXMAP, \PY{+w}{ } HostX.depth, \PY{+w}{ } NULL, \PY{g+gu}{@@ \PYZhy{}945,21 +945,21 @@ hostx\PYZus{}screen\PYZus{}init(KdScreenInfo *screen,} \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}byte\PYZus{}order = IMAGE\PYZus{}BYTE\PYZus{}ORDER; \PY{+w}{ } \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}data = \PY{g+gd}{\PYZhy{} xallocarray(scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}stride, buffer\PYZus{}height);} \PY{g+gi}{+ xallocarray(scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}stride, buffer\PYZus{}height * SCALE);} \PY{+w}{ } \PYZcb{} \PY{+w}{ } \PY{+w}{ } if (!HostX.size\PYZus{}set\PYZus{}from\PYZus{}configure) \PY{+w}{ } \PYZob{} \PY{+w}{ } uint32\PYZus{}t mask = XCB\PYZus{}CONFIG\PYZus{}WINDOW\PYZus{}WIDTH | XCB\PYZus{}CONFIG\PYZus{}WINDOW\PYZus{}HEIGHT; \PY{g+gd}{\PYZhy{} uint32\PYZus{}t values[2] = \PYZob{}width, height\PYZcb{};} \PY{g+gi}{+ uint32\PYZus{}t values[2] = \PYZob{}width * SCALE, height * SCALE\PYZcb{};} \PY{+w}{ } xcb\PYZus{}configure\PYZus{}window(HostX.conn, scrpriv\PYZhy{}\PYZgt{}win, mask, values); \PY{+w}{ } \PYZcb{} \PY{+w}{ } \PY{+w}{ } if (scrpriv\PYZhy{}\PYZgt{}win\PYZus{}pre\PYZus{}existing == None \PYZam{}\PYZam{} !EphyrWantResize) \PYZob{} \PY{+w}{ } /* Ask the WM to keep our size static */ \PY{+w}{ } xcb\PYZus{}size\PYZus{}hints\PYZus{}t size\PYZus{}hints = \PYZob{}0\PYZcb{}; \PY{g+gd}{\PYZhy{} size\PYZus{}hints.max\PYZus{}width = size\PYZus{}hints.min\PYZus{}width = width;} \PY{g+gd}{\PYZhy{} size\PYZus{}hints.max\PYZus{}height = size\PYZus{}hints.min\PYZus{}height = height;} \PY{g+gi}{+ size\PYZus{}hints.max\PYZus{}width = size\PYZus{}hints.min\PYZus{}width = width * SCALE;} \PY{g+gi}{+ size\PYZus{}hints.max\PYZus{}height = size\PYZus{}hints.min\PYZus{}height = height * SCALE;} \PY{+w}{ } size\PYZus{}hints.flags = (XCB\PYZus{}ICCCM\PYZus{}SIZE\PYZus{}HINT\PYZus{}P\PYZus{}MIN\PYZus{}SIZE | \PY{+w}{ } XCB\PYZus{}ICCCM\PYZus{}SIZE\PYZus{}HINT\PYZus{}P\PYZus{}MAX\PYZus{}SIZE); \PY{+w}{ } xcb\PYZus{}icccm\PYZus{}set\PYZus{}wm\PYZus{}normal\PYZus{}hints(HostX.conn, scrpriv\PYZhy{}\PYZgt{}win, \PY{g+gu}{@@ \PYZhy{}991,6 +991,7 @@ hostx\PYZus{}screen\PYZus{}init(KdScreenInfo *screen,} \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}win\PYZus{}x = x; \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}win\PYZus{}y = y; \PY{+w}{ } \PY{g+gi}{+ if (SCALE != 1) assert(scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}bpp == 32);} \PY{+w}{ }\PYZsh{}ifdef GLAMOR \PY{+w}{ } if (ephyr\PYZus{}glamor) \PYZob{} \PY{+w}{ } *bytes\PYZus{}per\PYZus{}line = 0; \PY{g+gu}{@@ \PYZhy{}999,7 +1000,7 @@ hostx\PYZus{}screen\PYZus{}init(KdScreenInfo *screen,} \PY{+w}{ } return NULL; \PY{+w}{ } \PYZcb{} else \PY{+w}{ }\PYZsh{}endif \PY{g+gd}{\PYZhy{} if (host\PYZus{}depth\PYZus{}matches\PYZus{}server(scrpriv)) \PYZob{}} \PY{g+gi}{+ if (SCALE == 1 \PYZam{}\PYZam{} host\PYZus{}depth\PYZus{}matches\PYZus{}server(scrpriv)) \PYZob{}} \PY{+w}{ } *bytes\PYZus{}per\PYZus{}line = scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}stride; \PY{+w}{ } *bits\PYZus{}per\PYZus{}pixel = scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}bpp; \PY{+w}{ } \PY{g+gu}{@@ \PYZhy{}1007,11 +1008,12 @@ hostx\PYZus{}screen\PYZus{}init(KdScreenInfo *screen,} \PY{+w}{ } return scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}data; \PY{+w}{ } \PYZcb{} \PY{+w}{ } else \PYZob{} \PY{g+gd}{\PYZhy{} int bytes\PYZus{}per\PYZus{}pixel = scrpriv\PYZhy{}\PYZgt{}server\PYZus{}depth \PYZgt{}\PYZgt{} 3;} \PY{g+gi}{+ int server\PYZus{}depth = scrpriv\PYZhy{}\PYZgt{}server\PYZus{}depth == 24 ? 32 : scrpriv\PYZhy{}\PYZgt{}server\PYZus{}depth;} \PY{g+gi}{+ int bytes\PYZus{}per\PYZus{}pixel = server\PYZus{}depth \PYZgt{}\PYZgt{} 3;} \PY{+w}{ } int stride = (width * bytes\PYZus{}per\PYZus{}pixel + 0x3) \PYZam{} \PYZti{}0x3; \PY{+w}{ } \PY{+w}{ } *bytes\PYZus{}per\PYZus{}line = stride; \PY{g+gd}{\PYZhy{} *bits\PYZus{}per\PYZus{}pixel = scrpriv\PYZhy{}\PYZgt{}server\PYZus{}depth;} \PY{g+gi}{+ *bits\PYZus{}per\PYZus{}pixel = server\PYZus{}depth;} \PY{+w}{ } \PY{+w}{ } EPHYR\PYZus{}DBG(\PYZdq{}server bpp \PYZpc{}i\PYZdq{}, bytes\PYZus{}per\PYZus{}pixel); \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}fb\PYZus{}data = xallocarray (stride, buffer\PYZus{}height); \PY{g+gu}{@@ \PYZhy{}1091,34 +1093,52 @@ hostx\PYZus{}paint\PYZus{}rect(KdScreenInfo *screen,} \PY{+w}{ } \PY{+w}{ } host\PYZus{}pixel = (r \PYZlt{}\PYZlt{} 16) | (g \PYZlt{}\PYZlt{} 8) | (b); \PY{+w}{ } \PY{g+gd}{\PYZhy{} xcb\PYZus{}image\PYZus{}put\PYZus{}pixel(scrpriv\PYZhy{}\PYZgt{}ximg, x, y, host\PYZus{}pixel);} \PY{g+gi}{+ for (int yp = 0; yp \PYZlt{} SCALE; ++yp)} \PY{g+gi}{+ for (int xp = 0; xp \PYZlt{} SCALE; ++xp)} \PY{g+gi}{+ xcb\PYZus{}image\PYZus{}put\PYZus{}pixel(scrpriv\PYZhy{}\PYZgt{}ximg, x*SCALE+xp, y*SCALE+yp, host\PYZus{}pixel);} \PY{+w}{ } break; \PY{+w}{ } \PYZcb{} \PY{+w}{ } case 8: \PY{+w}{ } \PYZob{} \PY{+w}{ } unsigned char pixel = \PY{+w}{ } *(unsigned char *) (scrpriv\PYZhy{}\PYZgt{}fb\PYZus{}data + idx); \PY{g+gd}{\PYZhy{} xcb\PYZus{}image\PYZus{}put\PYZus{}pixel(scrpriv\PYZhy{}\PYZgt{}ximg, x, y,} \PY{g+gd}{\PYZhy{} scrpriv\PYZhy{}\PYZgt{}cmap[pixel]);} \PY{g+gi}{+ host\PYZus{}pixel = scrpriv\PYZhy{}\PYZgt{}cmap[pixel];} \PY{g+gi}{+} \PY{g+gi}{+ for (int yp = 0; yp \PYZlt{} SCALE; ++yp)} \PY{g+gi}{+ for (int xp = 0; xp \PYZlt{} SCALE; ++xp)} \PY{g+gi}{+ xcb\PYZus{}image\PYZus{}put\PYZus{}pixel(scrpriv\PYZhy{}\PYZgt{}ximg, x*SCALE+xp, y*SCALE+yp, host\PYZus{}pixel);} \PY{+w}{ } break; \PY{+w}{ } \PYZcb{} \PY{+w}{ } default: \PY{+w}{ } break; \PY{+w}{ } \PYZcb{} \PY{+w}{ } \PYZcb{} \PY{g+gi}{+ \PYZcb{} else if (SCALE != 1) \PYZob{}} \PY{g+gi}{+ uint32\PYZus{}t* dst = (uint32\PYZus{}t*) scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}data;} \PY{g+gi}{+ uint32\PYZus{}t* src = (uint32\PYZus{}t*) scrpriv\PYZhy{}\PYZgt{}fb\PYZus{}data;} \PY{g+gi}{+ size\PYZus{}t src\PYZus{}stride = scrpriv\PYZhy{}\PYZgt{}win\PYZus{}width;} \PY{g+gi}{+ size\PYZus{}t dst\PYZus{}stride = scrpriv\PYZhy{}\PYZgt{}ximg\PYZhy{}\PYZgt{}stride/4;} \PY{g+gi}{+ for (int y = sy; y \PYZlt{} sy + height; ++y)} \PY{g+gi}{+ for (int x = sx; x \PYZlt{} sx + width; ++x) \PYZob{}} \PY{g+gi}{+ uint32\PYZus{}t val = src[y * src\PYZus{}stride + x];} \PY{g+gi}{+ for (int yp = 0; yp \PYZlt{} SCALE; ++yp)} \PY{g+gi}{+ for (int xp = 0; xp \PYZlt{} SCALE; ++xp)} \PY{g+gi}{+ dst[(y*SCALE+yp) * dst\PYZus{}stride + (x*SCALE+xp)] = val;} \PY{g+gi}{+ \PYZcb{}} \PY{+w}{ } \PYZcb{} \PY{+w}{ } \PY{+w}{ } if (HostX.have\PYZus{}shm) \PYZob{} \PY{+w}{ } xcb\PYZus{}image\PYZus{}shm\PYZus{}put(HostX.conn, scrpriv\PYZhy{}\PYZgt{}win, \PY{+w}{ } HostX.gc, scrpriv\PYZhy{}\PYZgt{}ximg, \PY{+w}{ } scrpriv\PYZhy{}\PYZgt{}shminfo, \PY{g+gd}{\PYZhy{} sx, sy, dx, dy, width, height, FALSE);} \PY{g+gi}{+ sx*SCALE, sy*SCALE, dx*SCALE, dy*SCALE,} \PY{g+gi}{+ width*SCALE, height*SCALE, FALSE);} \PY{+w}{ } \PYZcb{} \PY{+w}{ } else \PYZob{} \PY{g+gd}{\PYZhy{} xcb\PYZus{}image\PYZus{}t *subimg = xcb\PYZus{}image\PYZus{}subimage(scrpriv\PYZhy{}\PYZgt{}ximg, sx, sy,} \PY{g+gd}{\PYZhy{} width, height, 0, 0, 0);} \PY{g+gi}{+ xcb\PYZus{}image\PYZus{}t *subimg = xcb\PYZus{}image\PYZus{}subimage(scrpriv\PYZhy{}\PYZgt{}ximg, sx*SCALE, sy*SCALE,} \PY{g+gi}{+ width*SCALE, height*SCALE, 0, 0, 0);} \PY{+w}{ } xcb\PYZus{}image\PYZus{}t *img = xcb\PYZus{}image\PYZus{}native(HostX.conn, subimg, 1); \PY{g+gd}{\PYZhy{} xcb\PYZus{}image\PYZus{}put(HostX.conn, scrpriv\PYZhy{}\PYZgt{}win, HostX.gc, img, dx, dy, 0);} \PY{g+gi}{+ xcb\PYZus{}image\PYZus{}put(HostX.conn, scrpriv\PYZhy{}\PYZgt{}win, HostX.gc, img, dx*SCALE, dy*SCALE, 0);} \PY{+w}{ } if (subimg != img) \PY{+w}{ } xcb\PYZus{}image\PYZus{}destroy(img); \PY{+w}{ } xcb\PYZus{}image\PYZus{}destroy(subimg); \PY{g+gu}{@@ \PYZhy{}1133,7 +1153,10 @@ hostx\PYZus{}paint\PYZus{}debug\PYZus{}rect(KdScreenInfo *screen,} \PY{+w}{ }\PYZob{} \PY{+w}{ } EphyrScrPriv *scrpriv = screen\PYZhy{}\PYZgt{}driver; \PY{+w}{ } struct timespec tspec; \PY{g+gd}{\PYZhy{} xcb\PYZus{}rectangle\PYZus{}t rect = \PYZob{} .x = x, .y = y, .width = width, .height = height \PYZcb{};} \PY{g+gi}{+ xcb\PYZus{}rectangle\PYZus{}t rect = \PYZob{}} \PY{g+gi}{+ .x = x * SCALE, .y = y * SCALE,} \PY{g+gi}{+ .width = width * SCALE, .height = height * SCALE} \PY{g+gi}{+ \PYZcb{};} \PY{+w}{ } xcb\PYZus{}void\PYZus{}cookie\PYZus{}t cookie; \PY{+w}{ } xcb\PYZus{}generic\PYZus{}error\PYZus{}t *e; \PY{+w}{ } \PY{g+gu}{@@ \PYZhy{}1471,7 +1494,7 @@ hostx\PYZus{}create\PYZus{}window(int a\PYZus{}screen\PYZus{}number,} \PY{+w}{ } win, \PY{+w}{ } hostx\PYZus{}get\PYZus{}window (a\PYZus{}screen\PYZus{}number), \PY{+w}{ } a\PYZus{}geometry\PYZhy{}\PYZgt{}x, a\PYZus{}geometry\PYZhy{}\PYZgt{}y, \PY{g+gd}{\PYZhy{} a\PYZus{}geometry\PYZhy{}\PYZgt{}width, a\PYZus{}geometry\PYZhy{}\PYZgt{}height, 0,} \PY{g+gi}{+ a\PYZus{}geometry\PYZhy{}\PYZgt{}width * SCALE, a\PYZus{}geometry\PYZhy{}\PYZgt{}height * SCALE, 0,} \PY{+w}{ } XCB\PYZus{}WINDOW\PYZus{}CLASS\PYZus{}COPY\PYZus{}FROM\PYZus{}PARENT, \PY{+w}{ } a\PYZus{}visual\PYZus{}id, winmask, attrs); \PY{+w}{ } \PY{g+gu}{@@ \PYZhy{}1514,8 +1537,8 @@ hostx\PYZus{}set\PYZus{}window\PYZus{}geometry(int a\PYZus{}win, EphyrBox * a\PYZus{}geo)} \PY{+w}{ } \PY{+w}{ } values[0] = a\PYZus{}geo\PYZhy{}\PYZgt{}x; \PY{+w}{ } values[1] = a\PYZus{}geo\PYZhy{}\PYZgt{}y; \PY{g+gd}{\PYZhy{} values[2] = a\PYZus{}geo\PYZhy{}\PYZgt{}width;} \PY{g+gd}{\PYZhy{} values[3] = a\PYZus{}geo\PYZhy{}\PYZgt{}height;} \PY{g+gi}{+ values[2] = a\PYZus{}geo\PYZhy{}\PYZgt{}width * SCALE;} \PY{g+gi}{+ values[3] = a\PYZus{}geo\PYZhy{}\PYZgt{}height * SCALE;} \PY{+w}{ } xcb\PYZus{}configure\PYZus{}window(HostX.conn, a\PYZus{}win, mask, values); \PY{+w}{ } \PY{+w}{ } EPHYR\PYZus{}LOG(\PYZdq{}leave\PYZbs{}n\PYZdq{}); \PY{g+gh}{diff \PYZhy{}\PYZhy{}git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h} \PY{g+gh}{index 4b2678e58..cfce75d30 100644} \PY{g+gd}{\PYZhy{}\PYZhy{}\PYZhy{} a/hw/kdrive/ephyr/hostx.h} \PY{g+gi}{+++ b/hw/kdrive/ephyr/hostx.h} \PY{g+gu}{@@ \PYZhy{}32,6 +32,8 @@} \PY{+w}{ }\PYZsh{}include \PYZlt{}xcb/render.h\PYZgt{} \PY{+w}{ }\PYZsh{}include \PYZdq{}ephyr.h\PYZdq{} \PY{+w}{ } \PY{g+gi}{+\PYZsh{}define SCALE 2} \PY{g+gi}{+} \PY{+w}{ }\PYZsh{}define EPHYR\PYZus{}WANT\PYZus{}DEBUG 0 \PY{+w}{ } \PY{+w}{ }\PYZsh{}if (EPHYR\PYZus{}WANT\PYZus{}DEBUG) \end{Verbatim}