Skip to content

Commit 0a6073d

Browse files
committed
server: fix uninitialized uinput on some webOS versions
1 parent 2d5d640 commit 0a6073d

File tree

2 files changed

+22
-27
lines changed

2 files changed

+22
-27
lines changed

src/server.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ int server_start(server_t* server, settings_t* settings) {
118118
rfbLogEnable(0);
119119

120120
rfbScreenInfoPtr screen = rfbGetScreen(NULL, NULL, settings->width, settings->height, 8, 3, bpp);
121-
assert(screen != NULL);
121+
122+
if (screen == NULL) {
123+
ERR("rfbGetScreen() initialization failed");
124+
return -3;
125+
}
122126

123127
server->active_clients = 0;
124128
server->settings = settings;
@@ -127,9 +131,10 @@ int server_start(server_t* server, settings_t* settings) {
127131

128132
screen->newClientHook = server_client_incoming;
129133

130-
assert(initialize_uinput() >= 0);
131-
132-
// signal(SIGINT, intHandler);
134+
if ((ret = initialize_uinput()) != 0) {
135+
ERR("uinput initialization failed: %d", ret);
136+
return -4;
137+
}
133138

134139
// switch red and blue channels
135140
int tmp = screen->serverFormat.redShift;

src/uinput.c

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ int initialize_uinput(void)
2525
char *s;
2626
struct uinput_user_dev udev;
2727

28-
//if (fd >= 0) {
29-
// shutdown_uinput();
30-
//}
31-
3228
fd = open("/dev/uinput", O_WRONLY | O_NDELAY);
3329

3430
if (fd < 0) {
@@ -64,25 +60,19 @@ int initialize_uinput(void)
6460
ioctl(fd, UI_SET_KEYBIT, BTN_BACK);
6561
ioctl(fd, UI_SET_KEYBIT, KEY_PREVIOUS);
6662

67-
68-
//if (uinput_touchscreen) {
69-
ioctl(fd, UI_SET_KEYBIT, BTN_TOUCH);
70-
//}
71-
//if (uinput_touchscreen || uinput_abs) {
72-
ioctl(fd, UI_SET_EVBIT, EV_ABS);
73-
ioctl(fd, UI_SET_ABSBIT, ABS_X);
74-
ioctl(fd, UI_SET_ABSBIT, ABS_Y);
75-
udev.absmin[ABS_X] = 0;
76-
udev.absmax[ABS_X] = 1920; // XXX: hardcoded
77-
udev.absfuzz[ABS_X] = 0;
78-
udev.absflat[ABS_X] = 0;
79-
udev.absmin[ABS_Y] = 0;
80-
udev.absmax[ABS_Y] = 1080; // XXX: hardcoded
81-
udev.absfuzz[ABS_Y] = 0;
82-
udev.absflat[ABS_Y] = 0;
83-
//set_uinput_accel_xy(1.0, 1.0);
84-
//}
85-
63+
ioctl(fd, UI_SET_KEYBIT, BTN_TOUCH);
64+
65+
ioctl(fd, UI_SET_EVBIT, EV_ABS);
66+
ioctl(fd, UI_SET_ABSBIT, ABS_X);
67+
ioctl(fd, UI_SET_ABSBIT, ABS_Y);
68+
udev.absmin[ABS_X] = 0;
69+
udev.absmax[ABS_X] = 1920; // XXX: hardcoded
70+
udev.absfuzz[ABS_X] = 0;
71+
udev.absflat[ABS_X] = 0;
72+
udev.absmin[ABS_Y] = 0;
73+
udev.absmax[ABS_Y] = 1080; // XXX: hardcoded
74+
udev.absfuzz[ABS_Y] = 0;
75+
udev.absflat[ABS_Y] = 0;
8676

8777
write(fd, &udev, sizeof(udev));
8878

0 commit comments

Comments
 (0)