static int startFreezeReminderAlarm (void) { if (freezeReminderAlarm) return 1; return asyncSetAlarmIn(&freezeReminderAlarm, SCREEN_FREEZE_REMINDER_INTERVAL, handleFreezeReminderAlarm, NULL); }
static void setBrailleInputAlarm (int delay, void *data) { if (!brailleInputAlarm) { asyncSetAlarmIn(&brailleInputAlarm, delay, handleBrailleInputAlarm, data); } }
static void setBlinkAlarm (BlinkDescriptor *blink) { asyncSetAlarmIn(&blink->alarmHandle, getBlinkDuration(blink), handleBlinkAlarm, blink); }
static int gpmOpenConnection (void) { switch (gpmConnectionState) { case GCS_CLOSED: { Gpm_Connect options = { .eventMask = GPM_MOVE, .defaultMask = ~0, .minMod = 0, .maxMod = ~0 }; gpm_tried = 0; gpm_zerobased = 1; if (Gpm_Open(&options, -1) == -1) { logMessage(GPM_LOG_LEVEL, "GPM open error: %s", strerror(errno)); asyncSetAlarmIn(NULL, 5000, gpmResetConnection, NULL); gpmConnectionState = GCS_FAILED; return 0; } logMessage(GPM_LOG_LEVEL, "GPM opened: fd=%d con=%d", gpm_fd, gpm_consolefd); gpmConnectionState = GCS_OPENED; } case GCS_OPENED: return 1; } return 0; } static void gpmCloseConnection (int alreadyClosed) { if (gpmConnectionState == GCS_OPENED) { if (!alreadyClosed) Gpm_Close(); logMessage(GPM_LOG_LEVEL, "GPM closed"); } gpmConnectionState = GCS_CLOSED; } #endif /* HAVE_LIBGPM */ static int routeCursor_RealScreen (int column, int row, int screen) { return startRouting(column, row, screen); } static int highlightRegion_RealScreen (int left, int right, int top, int bottom) { FILE *console = getConsole(); if (console) { #ifdef HAVE_LIBGPM if (gpmOpenConnection() && (gpm_fd >= 0)) { if (Gpm_DrawPointer(left, top, fileno(console)) != -1) return 1; if (errno != EINVAL) { logMessage(GPM_LOG_LEVEL, "Gpm_DrawPointer error: %s", strerror(errno)); gpmCloseConnection(0); return 0; } } #endif /* HAVE_LIBGPM */ } return 0; }
static void setExecuteCommandAlarm (void *data) { asyncSetAlarmIn(NULL, 0, handleExecuteCommandAlarm, data); }