summaryrefslogtreecommitdiffstats
path: root/x11vnc/xwrappers.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/xwrappers.c')
-rw-r--r--x11vnc/xwrappers.c88
1 files changed, 86 insertions, 2 deletions
diff --git a/x11vnc/xwrappers.c b/x11vnc/xwrappers.c
index 63e231f..2511009 100644
--- a/x11vnc/xwrappers.c
+++ b/x11vnc/xwrappers.c
@@ -5,6 +5,7 @@
#include "keyboard.h"
#include "xevents.h"
#include "connections.h"
+#include "cleanup.h"
int xshm_present = 0;
int xtest_present = 0;
@@ -103,11 +104,15 @@ int guess_bits_per_color(int bits_per_pixel) {
}
int XFlush_wr(Display *disp) {
+#if NO_X11
+ return 1;
+#else
if (disp) {
return XFlush(disp);
} else {
return 1;
}
+#endif /* NO_X11 */
}
/*
@@ -184,6 +189,10 @@ Bool XShmQueryExtension_wr(Display *disp) {
XImage *xreadscreen(Display *disp, Drawable d, int x, int y,
unsigned int width, unsigned int height, Bool show_cursor) {
+#if NO_X11
+ return NULL;
+#else
+
#ifdef SOLARIS_OVERLAY
return XReadScreen(disp, d, x, y, width, height,
show_cursor);
@@ -201,12 +210,17 @@ XImage *xreadscreen(Display *disp, Drawable d, int x, int y,
return NULL;
# endif
#endif
+
+#endif /* NO_X11 */
}
XImage *XGetSubImage_wr(Display *disp, Drawable d, int x, int y,
unsigned int width, unsigned int height, unsigned long plane_mask,
int format, XImage *dest_image, int dest_x, int dest_y) {
-
+#if NO_X11
+ nox11_exit(1);
+ return NULL;
+#else
ADJUST_ROOTSHIFT
if (overlay && dest_x == 0 && dest_y == 0) {
@@ -231,11 +245,16 @@ XImage *XGetSubImage_wr(Display *disp, Drawable d, int x, int y,
}
return XGetSubImage(disp, d, x, y, width, height, plane_mask,
format, dest_image, dest_x, dest_y);
+#endif /* NO_X11 */
}
XImage *XGetImage_wr(Display *disp, Drawable d, int x, int y,
unsigned int width, unsigned int height, unsigned long plane_mask,
int format) {
+#if NO_X11
+ nox11_exit(1);
+ return NULL;
+#else
ADJUST_ROOTSHIFT
@@ -244,6 +263,7 @@ XImage *XGetImage_wr(Display *disp, Drawable d, int x, int y,
(Bool) overlay_cursor);
}
return XGetImage(disp, d, x, y, width, height, plane_mask, format);
+#endif /* NO_X11 */
}
XImage *XCreateImage_wr(Display *disp, Visual *visual, unsigned int depth,
@@ -275,6 +295,10 @@ XImage *XCreateImage_wr(Display *disp, Visual *visual, unsigned int depth,
return xi;
}
+#if NO_X11
+ nox11_exit(1);
+ return NULL;
+#else
if (overlay) {
XImage *xi;
xi = xreadscreen(disp, window, 0, 0, width, height, False);
@@ -290,6 +314,7 @@ XImage *XCreateImage_wr(Display *disp, Visual *visual, unsigned int depth,
return XCreateImage(disp, visual, depth, format, offset, data,
width, height, bitmap_pad, bytes_per_line);
+#endif /* NO_X11 */
}
static void copy_raw_fb_24_to_32(XImage *dest, int x, int y, unsigned int w,
@@ -545,12 +570,15 @@ void init_track_keycode_state(void) {
static void upup_downdown_warning(KeyCode key, Bool down) {
RAWFB_RET_VOID
-
+#if NO_X11
+ return;
+#else
if ((down ? 1:0) == keycode_state[(int) key]) {
char *str = XKeysymToString(XKeycodeToKeysym(dpy, key, 0));
rfbLog("XTestFakeKeyEvent: keycode=0x%x \"%s\" is *already* "
"%s\n", key, str ? str : "null", down ? "down":"up");
}
+#endif /* NO_X11 */
}
/*
@@ -562,6 +590,10 @@ void XTRAP_FakeKeyEvent_wr(Display* dpy, KeyCode key, Bool down,
unsigned long delay) {
RAWFB_RET_VOID
+#if NO_X11
+ nox11_exit(1);
+ return;
+#else
if (! xtrap_present) {
DEBUG_SKIPPED_INPUT(debug_keyboard, "keyboard: no-XTRAP");
@@ -580,6 +612,8 @@ void XTRAP_FakeKeyEvent_wr(Display* dpy, KeyCode key, Bool down,
#else
DEBUG_SKIPPED_INPUT(debug_keyboard, "keyboard: no-XTRAP-build");
#endif
+
+#endif /* NO_X11 */
}
void XTestFakeKeyEvent_wr(Display* dpy, KeyCode key, Bool down,
@@ -588,6 +622,10 @@ void XTestFakeKeyEvent_wr(Display* dpy, KeyCode key, Bool down,
RAWFB_RET_VOID
+#if NO_X11
+ nox11_exit(1);
+ return;
+#else
if (debug_keyboard) {
char *str = XKeysymToString(XKeycodeToKeysym(dpy, key, 0));
rfbLog("XTestFakeKeyEvent(dpy, keycode=0x%x \"%s\", %s)\n",
@@ -633,12 +671,18 @@ void XTestFakeKeyEvent_wr(Display* dpy, KeyCode key, Bool down,
}
keycode_state[(int) key] = down ? 1 : 0;
#endif
+
+#endif /* NO_X11 */
}
void XTRAP_FakeButtonEvent_wr(Display* dpy, unsigned int button, Bool is_press,
unsigned long delay) {
RAWFB_RET_VOID
+#if NO_X11
+ nox11_exit(1);
+ return;
+#else
if (! xtrap_present) {
DEBUG_SKIPPED_INPUT(debug_keyboard, "button: no-XTRAP");
@@ -653,12 +697,18 @@ void XTRAP_FakeButtonEvent_wr(Display* dpy, unsigned int button, Bool is_press,
#else
DEBUG_SKIPPED_INPUT(debug_keyboard, "button: no-XTRAP-build");
#endif
+
+#endif /* NO_X11 */
}
void XTestFakeButtonEvent_wr(Display* dpy, unsigned int button, Bool is_press,
unsigned long delay) {
RAWFB_RET_VOID
+#if NO_X11
+ nox11_exit(1);
+ return;
+#else
if (grab_ptr) {
XUngrabPointer(dpy, CurrentTime);
@@ -686,6 +736,7 @@ void XTestFakeButtonEvent_wr(Display* dpy, unsigned int button, Bool is_press,
if (grab_ptr) {
adjust_grabs(1, 1);
}
+#endif /* NO_X11 */
}
void XTRAP_FakeMotionEvent_wr(Display* dpy, int screen, int x, int y,
@@ -693,6 +744,10 @@ void XTRAP_FakeMotionEvent_wr(Display* dpy, int screen, int x, int y,
RAWFB_RET_VOID
+#if NO_X11
+ nox11_exit(1);
+ return;
+#else
if (! xtrap_present) {
DEBUG_SKIPPED_INPUT(debug_keyboard, "motion: no-XTRAP");
return;
@@ -705,12 +760,18 @@ void XTRAP_FakeMotionEvent_wr(Display* dpy, int screen, int x, int y,
#else
DEBUG_SKIPPED_INPUT(debug_keyboard, "motion: no-XTRAP-build");
#endif
+
+#endif /* NO_X11 */
}
void XTestFakeMotionEvent_wr(Display* dpy, int screen, int x, int y,
unsigned long delay) {
RAWFB_RET_VOID
+#if NO_X11
+ nox11_exit(1);
+ return;
+#else
if (grab_ptr) {
XUngrabPointer(dpy, CurrentTime);
@@ -734,6 +795,7 @@ void XTestFakeMotionEvent_wr(Display* dpy, int screen, int x, int y,
if (grab_ptr) {
adjust_grabs(1, 1);
}
+#endif /* NO_X11 */
}
Bool XTestCompareCurrentCursorWithWindow_wr(Display* dpy, Window w) {
@@ -971,6 +1033,10 @@ Display *XOpenDisplay_wr(char *display_name) {
if (! xauth_raw(1)) {
return NULL;
}
+#if NO_X11
+ rfbLog("This x11vnc was built without X11 support (-rawfb only).\n");
+ return NULL;
+#else
d = XOpenDisplay(display_name);
if (db) fprintf(stderr, "XOpenDisplay_wr: %s %p\n", display_name, (void *)d);
@@ -978,11 +1044,29 @@ Display *XOpenDisplay_wr(char *display_name) {
xauth_raw(0);
return d;
+#endif /* NO_X11 */
}
int XCloseDisplay_wr(Display *display) {
int db = 0;
if (db) fprintf(stderr, "XCloseDisplay_wr: %p\n", (void *)display);
+#if NO_X11
+ return 0;
+#else
return XCloseDisplay(display);
+#endif /* NO_X11 */
+}
+
+void nox11_exit(int rc) {
+#if NO_X11
+ rfbLog("This x11vnc was not built with X11 support.\n");
+ clean_up_exit(rc);
+#else
+ if (0) {rc = 0;}
+#endif
}
+#if NO_X11
+#include "nox11_funcs.h"
+#endif
+