Index: trunk/scconfig/Rev.h =================================================================== --- trunk/scconfig/Rev.h (revision 6700) +++ trunk/scconfig/Rev.h (revision 6701) @@ -1 +1 @@ -static const int myrev = 6700; +static const int myrev = 6701; Index: trunk/scconfig/Rev.tab =================================================================== --- trunk/scconfig/Rev.tab (revision 6700) +++ trunk/scconfig/Rev.tab (revision 6701) @@ -1,4 +1,4 @@ -6700 configure gtk splitup +6701 configure gtk splitup 6392 configure draw cross section plugin (gtk and lesstif depend on it) 6365 configure gtk splitup 6111 configure layer vs. layer group code split Index: trunk/src_plugins/hid_gtk/gtkhid-main.c =================================================================== --- trunk/src_plugins/hid_gtk/gtkhid-main.c (revision 6700) +++ trunk/src_plugins/hid_gtk/gtkhid-main.c (revision 6701) @@ -32,6 +32,7 @@ /* AV: Care to circular includes !!!? */ #include "../src_plugins/lib_gtk_common/ui_zoompan.h" +#include "../src_plugins/lib_gtk_common/util_block_hook.h" #include "../src_plugins/lib_gtk_common/util_timer.h" #include "../src_plugins/lib_gtk_common/util_watch.h" #include "../src_plugins/lib_gtk_common/dlg_about.h" @@ -197,62 +198,6 @@ } } -typedef struct { - GSource source; - void (*func) (pcb_hidval_t user_data); - pcb_hidval_t user_data; -} BlockHookSource; - -static gboolean ghid_block_hook_prepare(GSource * source, gint * timeout); -static gboolean ghid_block_hook_check(GSource * source); -static gboolean ghid_block_hook_dispatch(GSource * source, GSourceFunc callback, gpointer user_data); - -static GSourceFuncs ghid_block_hook_funcs = { - ghid_block_hook_prepare, - ghid_block_hook_check, - ghid_block_hook_dispatch, - NULL /* No destroy notification */ -}; - -static gboolean ghid_block_hook_prepare(GSource * source, gint * timeout) -{ - pcb_hidval_t data = ((BlockHookSource *) source)->user_data; - ((BlockHookSource *) source)->func(data); - return FALSE; -} - -static gboolean ghid_block_hook_check(GSource * source) -{ - return FALSE; -} - -static gboolean ghid_block_hook_dispatch(GSource * source, GSourceFunc callback, gpointer user_data) -{ - return FALSE; -} - -static pcb_hidval_t ghid_add_block_hook(void (*func) (pcb_hidval_t data), pcb_hidval_t user_data) -{ - pcb_hidval_t ret; - BlockHookSource *source; - - source = (BlockHookSource *) g_source_new(&ghid_block_hook_funcs, sizeof(BlockHookSource)); - - source->func = func; - source->user_data = user_data; - - g_source_attach((GSource *) source, NULL); - - ret.ptr = (void *) source; - return ret; -} - -static void ghid_stop_block_hook(pcb_hidval_t mlpoll) -{ - GSource *source = (GSource *) mlpoll.ptr; - g_source_destroy(source); -} - int ghid_confirm_dialog(const char *msg, ...) { int rv = 0; Index: trunk/src_plugins/lib_gtk_common/Plug.tmpasm =================================================================== --- trunk/src_plugins/lib_gtk_common/Plug.tmpasm (revision 6700) +++ trunk/src_plugins/lib_gtk_common/Plug.tmpasm (revision 6701) @@ -27,6 +27,7 @@ $(PLUGDIR)/lib_gtk_common/in_mouse.o $(PLUGDIR)/lib_gtk_common/menu_lht.o $(PLUGDIR)/lib_gtk_common/ui_zoompan.o + $(PLUGDIR)/lib_gtk_common/util_block_hook.o $(PLUGDIR)/lib_gtk_common/util_str.o $(PLUGDIR)/lib_gtk_common/util_timer.o $(PLUGDIR)/lib_gtk_common/util_watch.o Index: trunk/src_plugins/lib_gtk_common/util_block_hook.c =================================================================== --- trunk/src_plugins/lib_gtk_common/util_block_hook.c (nonexistent) +++ trunk/src_plugins/lib_gtk_common/util_block_hook.c (revision 6701) @@ -0,0 +1,79 @@ +/* + * COPYRIGHT + * + * PCB, interactive printed circuit board design + * Copyright (C) 1994,1995,1996 Thomas Nau + * pcb-rnd Copyright (C) 2017 Tibor 'Igor2' Palinkas + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include "config.h" +#include +#include "util_block_hook.h" +/*#include "conf_core.h"*/ + +typedef struct { + GSource source; + void (*func) (pcb_hidval_t user_data); + pcb_hidval_t user_data; +} BlockHookSource; + +static GSourceFuncs ghid_block_hook_funcs = { + ghid_block_hook_prepare, + ghid_block_hook_check, + ghid_block_hook_dispatch, + NULL /* No destroy notification */ +}; + +gboolean ghid_block_hook_prepare(GSource * source, gint * timeout) +{ + pcb_hidval_t data = ((BlockHookSource *) source)->user_data; + ((BlockHookSource *) source)->func(data); + return FALSE; +} + +gboolean ghid_block_hook_check(GSource * source) +{ + return FALSE; +} + +gboolean ghid_block_hook_dispatch(GSource * source, GSourceFunc callback, gpointer user_data) +{ + return FALSE; +} + +pcb_hidval_t ghid_add_block_hook(void (*func) (pcb_hidval_t data), pcb_hidval_t user_data) +{ + pcb_hidval_t ret; + BlockHookSource *source; + + source = (BlockHookSource *) g_source_new(&ghid_block_hook_funcs, sizeof(BlockHookSource)); + + source->func = func; + source->user_data = user_data; + + g_source_attach((GSource *) source, NULL); + + ret.ptr = (void *) source; + return ret; +} + +void ghid_stop_block_hook(pcb_hidval_t mlpoll) +{ + GSource *source = (GSource *) mlpoll.ptr; + g_source_destroy(source); +} Index: trunk/src_plugins/lib_gtk_common/util_block_hook.h =================================================================== --- trunk/src_plugins/lib_gtk_common/util_block_hook.h (nonexistent) +++ trunk/src_plugins/lib_gtk_common/util_block_hook.h (revision 6701) @@ -0,0 +1,9 @@ +#include +#include "hid.h" + +pcb_hidval_t ghid_add_block_hook(void (*func) (pcb_hidval_t data), pcb_hidval_t user_data); +void ghid_stop_block_hook(pcb_hidval_t mlpoll); + +gboolean ghid_block_hook_prepare(GSource * source, gint * timeout); +gboolean ghid_block_hook_check(GSource * source); +gboolean ghid_block_hook_dispatch(GSource * source, GSourceFunc callback, gpointer user_data);