diff options
Diffstat (limited to 'xorg-server/hw/kdrive/ephyr/hostx.c')
-rw-r--r-- | xorg-server/hw/kdrive/ephyr/hostx.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/xorg-server/hw/kdrive/ephyr/hostx.c b/xorg-server/hw/kdrive/ephyr/hostx.c index f2b458d90..438c9f76f 100644 --- a/xorg-server/hw/kdrive/ephyr/hostx.c +++ b/xorg-server/hw/kdrive/ephyr/hostx.c @@ -47,9 +47,11 @@ #include <errno.h> #include <time.h> +#ifndef _MSC_VER #include <sys/ipc.h> #include <sys/shm.h> #include <sys/time.h> +#endif #include <X11/Xlib.h> #include <X11/Xutil.h> @@ -200,7 +202,11 @@ hostx_add_screen(EphyrScreenInfo screen, unsigned long win_id, int screen_num) void hostx_set_display_name(char *name) { +#ifdef _MSC_VER + __asm int 3; +#else HostX.server_dpy_name = strdup(name); +#endif } void @@ -464,6 +470,9 @@ hostx_init(void) } /* Try to get share memory ximages for a little bit more speed */ +#ifdef _MSC_VER + __asm int 3; +#else if (!XShmQueryExtension(HostX.dpy) || getenv("XEPHYR_NO_SHM")) { fprintf(stderr, "\nXephyr unable to use SHM XImages\n"); HostX.have_shm = False; @@ -491,6 +500,7 @@ hostx_init(void) shmdt(shminfo.shmaddr); shmctl(shminfo.shmid, IPC_RMID, 0); } +#endif XFlush(HostX.dpy); @@ -629,7 +639,7 @@ hostx_screen_init(EphyrScreenInfo screen, struct EphyrHostScreen *host_screen = host_screen_from_screen_info(screen); if (!host_screen) { - fprintf(stderr, "%s: Error in accessing hostx data\n", __func__); + fprintf(stderr, "%s: Error in accessing hostx data\n", __FUNCTION__); exit(1); } @@ -642,10 +652,14 @@ hostx_screen_init(EphyrScreenInfo screen, */ if (HostX.have_shm) { +#ifdef _MSC_VER + __asm int 3; +#else XShmDetach(HostX.dpy, &host_screen->shminfo); XDestroyImage(host_screen->ximg); shmdt(host_screen->shminfo.shmaddr); shmctl(host_screen->shminfo.shmid, IPC_RMID, 0); +#endif } else { free(host_screen->ximg->data); @@ -657,6 +671,10 @@ hostx_screen_init(EphyrScreenInfo screen, if (HostX.have_shm) { host_screen->ximg = +#ifdef _MSC_VER +__asm int 3; +#else + host_screen->ximg = XShmCreateImage(HostX.dpy, HostX.visual, HostX.depth, ZPixmap, NULL, &host_screen->shminfo, width, buffer_height); @@ -680,6 +698,7 @@ hostx_screen_init(EphyrScreenInfo screen, XShmAttach(HostX.dpy, &host_screen->shminfo); shm_success = True; } +#endif } if (!shm_success) { @@ -804,9 +823,13 @@ hostx_paint_rect(EphyrScreenInfo screen, } if (HostX.have_shm) { +#ifdef _MSC_VER + __asm int 3; +#else XShmPutImage(HostX.dpy, host_screen->win, HostX.gc, host_screen->ximg, sx, sy, dx, dy, width, height, False); +#endif } else { XPutImage(HostX.dpy, host_screen->win, HostX.gc, host_screen->ximg, @@ -820,6 +843,9 @@ static void hostx_paint_debug_rect(struct EphyrHostScreen *host_screen, int x, int y, int width, int height) { +#ifdef _MSC_VER + __asm int 3; +#else struct timespec tspec; tspec.tv_sec = HostX.damage_debug_msec / (1000000); @@ -835,6 +861,7 @@ hostx_paint_debug_rect(struct EphyrHostScreen *host_screen, /* nanosleep seems to work better than usleep for me... */ nanosleep(&tspec, NULL); +#endif } void @@ -1256,8 +1283,12 @@ hostx_set_window_bounding_rectangles(int a_window, rects[i].x, rects[i].y, rects[i].width, rects[i].height); } /*this aways returns 1 */ +#ifdef _MSC_VER + __asm int 3; +#else XShapeCombineRectangles(dpy, a_window, ShapeBounding, 0, 0, rects, a_num_rects, ShapeSet, YXBanded); +#endif is_ok = TRUE; free(rects); @@ -1289,8 +1320,12 @@ hostx_set_window_clipping_rectangles(int a_window, rects[i].x, rects[i].y, rects[i].width, rects[i].height); } /*this aways returns 1 */ +#ifdef _MSC_VER + __asm int 3; +#else XShapeCombineRectangles(dpy, a_window, ShapeClip, 0, 0, rects, a_num_rects, ShapeSet, YXBanded); +#endif is_ok = TRUE; free(rects); @@ -1303,11 +1338,15 @@ int hostx_has_xshape(void) { int event_base = 0, error_base = 0; +#ifdef _MSC_VER + __asm int 3; +#else Display *dpy = hostx_get_display(); if (!XShapeQueryExtension(dpy, &event_base, &error_base)) { return FALSE; } +#endif return TRUE; } |