SardemF77 input.

This commit is contained in:
Dave Davenport 2016-01-18 21:43:33 +01:00
parent 80a6aa4549
commit 6692f36423
2 changed files with 19 additions and 30 deletions

View File

@ -40,15 +40,15 @@ typedef struct
typedef enum typedef enum
{ {
TB_AUTOHEIGHT = 1 << 0, TB_AUTOHEIGHT = 1 << 0,
TB_AUTOWIDTH = 1 << 1, TB_AUTOWIDTH = 1 << 1,
TB_LEFT = 1 << 16, TB_LEFT = 1 << 16,
TB_RIGHT = 1 << 17, TB_RIGHT = 1 << 17,
TB_CENTER = 1 << 18, TB_CENTER = 1 << 18,
TB_EDITABLE = 1 << 19, TB_EDITABLE = 1 << 19,
TB_MARKUP = 1 << 20, TB_MARKUP = 1 << 20,
TB_WRAP = 1 << 21, TB_WRAP = 1 << 21,
TB_PASSWORD = 1 << 22, TB_PASSWORD = 1 << 22,
} TextboxFlags; } TextboxFlags;
typedef enum typedef enum

View File

@ -2163,7 +2163,7 @@ static void reload_configuration ()
/** /**
* Process X11 events in the main-loop (gui-thread) of the application. * Process X11 events in the main-loop (gui-thread) of the application.
*/ */
static void main_loop_x11_event_handler ( void ) static gboolean main_loop_x11_event_handler ( G_GNUC_UNUSED gpointer data )
{ {
// X11 produced an event. Consume them. // X11 produced an event. Consume them.
while ( XPending ( display ) ) { while ( XPending ( display ) ) {
@ -2183,6 +2183,7 @@ static void main_loop_x11_event_handler ( void )
handle_keypress ( &ev ); handle_keypress ( &ev );
} }
} }
return G_SOURCE_CONTINUE;
} }
/** /**
@ -2260,12 +2261,10 @@ static gboolean x11_event_source_check ( GSource * base )
static gboolean x11_event_source_dispatch ( GSource * base, GSourceFunc callback, gpointer data ) static gboolean x11_event_source_dispatch ( GSource * base, GSourceFunc callback, gpointer data )
{ {
X11EventSource *xs = (X11EventSource *) base; X11EventSource *xs = (X11EventSource *) base;
if ( xs->fd_x11.revents ) {
printf ( "x11\n" );
main_loop_x11_event_handler ();
}
if ( callback ) { if ( callback ) {
callback ( data ); if ( xs->fd_x11.revents ) {
callback ( data );
}
} }
return G_SOURCE_CONTINUE;; return G_SOURCE_CONTINUE;;
} }
@ -2504,38 +2503,28 @@ int main ( int argc, char *argv[] )
// It also listens from messages from the signal process. // It also listens from messages from the signal process.
XSelectInput ( display, DefaultRootWindow ( display ), KeyPressMask ); XSelectInput ( display, DefaultRootWindow ( display ), KeyPressMask );
XFlush ( display ); XFlush ( display );
int x11_fd = ConnectionNumber ( display ); int x11_fd = ConnectionNumber ( display );
X11EventSource *source = (X11EventSource *) g_source_new ( &x11_event_source_funcs, sizeof ( X11EventSource ) ); X11EventSource *source = (X11EventSource *) g_source_new ( &x11_event_source_funcs, sizeof ( X11EventSource ) );
source->fd_x11.fd = x11_fd; source->fd_x11.fd = x11_fd;
source->fd_x11.events = G_IO_IN | G_IO_ERR; source->fd_x11.events = G_IO_IN | G_IO_ERR;
g_source_add_poll ( (GSource *) source, &source->fd_x11 ); g_source_add_poll ( (GSource *) source, &source->fd_x11 );
main_loop = g_main_loop_new ( NULL, FALSE ); main_loop = g_main_loop_new ( NULL, FALSE );
g_source_attach ( (GSource *) source, NULL ); g_source_attach ( (GSource *) source, NULL );
g_source_set_callback ( (GSource *) source, main_loop_x11_event_handler, NULL, NULL );
// Setup signal handling sources. // Setup signal handling sources.
GSource *sigs_hup = NULL, *sigs_term = NULL, *sigs_usr1 = NULL;
// SIGHup signal. // SIGHup signal.
sigs_hup = g_unix_signal_source_new ( SIGHUP ); g_unix_signal_add ( SIGHUP, main_loop_signal_handler_hup, NULL );
g_source_set_callback ( sigs_hup, main_loop_signal_handler_hup, NULL, NULL );
g_source_attach ( sigs_hup, NULL );
// SIGTERM // SIGTERM
sigs_term = g_unix_signal_source_new ( SIGTERM ); g_unix_signal_add ( SIGTERM, main_loop_signal_handler_term, NULL );
g_source_set_callback ( sigs_term, main_loop_signal_handler_term, NULL, NULL );
g_source_attach ( sigs_term, NULL );
// SIGUSR1 // SIGUSR1
sigs_usr1 = g_unix_signal_source_new ( SIGUSR1 ); g_unix_signal_add ( SIGUSR1, main_loop_signal_handler_usr1, NULL );
g_source_set_callback ( sigs_usr1, main_loop_signal_handler_usr1, NULL, NULL );
g_source_attach ( sigs_usr1, NULL );
// Start mainloop. // Start mainloop.
g_main_loop_run ( main_loop ); g_main_loop_run ( main_loop );
// Cleanup // Cleanup
g_source_unref ( (GSource *) source ); g_source_unref ( (GSource *) source );
g_source_unref ( sigs_hup );
g_source_unref ( sigs_term );
g_source_unref ( sigs_usr1 );
g_main_loop_unref ( main_loop ); g_main_loop_unref ( main_loop );
release_global_keybindings (); release_global_keybindings ();