Index: trunk/src/librnd/core/hidlib.h =================================================================== --- trunk/src/librnd/core/hidlib.h (revision 32698) +++ trunk/src/librnd/core/hidlib.h (revision 32699) @@ -107,7 +107,15 @@ of a mouse motion event */ void (*crosshair_move_to)(rnd_hidlib_t *hl, rnd_coord_t abs_x, rnd_coord_t abs_y, int mouse_mot); +/* Optional: draw any fixed mark on XOR overlay; if inhibit_drawing_mode is + true, do not call ->set_drawing_mode */ + void (*draw_marks)(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode); + + /* Draw any mark following the crosshair on XOR overlay; if inhibit_drawing_mode is true, do not call ->set_drawing_mode */ + void (*draw_attached)(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode); + + /* Spare: see doc/developer/spare.txt */ void (*spare_f1)(void), (*spare_f2)(void), (*spare_f3)(void), (*spare_f4)(void), (*spare_f5)(void), (*spare_f6)(void); long spare_l1, spare_l2, spare_l3, spare_l4; @@ -129,12 +137,7 @@ -/* Draw any fixed mark on XOR overlay; if inhibit_drawing_mode is true, do not call ->set_drawing_mode */ -void rnd_draw_marks(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode); -/* Draw any mark following the crosshair on XOR overlay; if inhibit_drawing_mode is true, do not call ->set_drawing_mode */ -void rnd_draw_attached(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode); - /*** One of these two functions will be called whenever (parts of) the screen needs redrawing (on screen, print or export, board or preview). The expose function does the following: Index: trunk/src/librnd/plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src/librnd/plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 32698) +++ trunk/src/librnd/plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 32699) @@ -1145,12 +1145,12 @@ ghid_gdk_draw_grid(hidlib); /* In some cases we are called with the crosshair still off */ - if (priv->attached_invalidate_depth == 0) - rnd_draw_attached(hidlib, 0); + if ((priv->attached_invalidate_depth == 0) && (rnd_app.draw_attached != NULL)) + rnd_app.draw_attached(hidlib, 0); /* In some cases we are called with the mark still off */ - if (priv->mark_invalidate_depth == 0) - rnd_draw_marks(hidlib, 0); + if ((priv->mark_invalidate_depth == 0) && (rnd_app.draw_marks != NULL)) + rnd_app.draw_marks(hidlib, 0); priv->clip_rect_valid = rnd_false; @@ -1229,8 +1229,8 @@ return; } - if (priv->attached_invalidate_depth == 0) - rnd_draw_attached(hidlib, 0); + if ((priv->attached_invalidate_depth == 0) && (rnd_app.draw_attached != NULL)) + rnd_app.draw_attached(hidlib, 0); if (!changes_complete) { priv->attached_invalidate_depth++; @@ -1263,8 +1263,8 @@ return; } - if (priv->mark_invalidate_depth == 0) - rnd_draw_marks(hidlib, 0); + if ((priv->mark_invalidate_depth == 0) && (rnd_app.draw_marks != NULL)) + rnd_app.draw_marks(hidlib, 0); if (!changes_complete) { priv->mark_invalidate_depth++; Index: trunk/src/librnd/plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src/librnd/plugins/hid_gtk2_gl/gtkhid-gl.c (revision 32698) +++ trunk/src/librnd/plugins/hid_gtk2_gl/gtkhid-gl.c (revision 32699) @@ -758,8 +758,10 @@ ghid_gl_invalidate_current_gc(); - rnd_draw_attached(hidlib, 0); - rnd_draw_marks(hidlib, 0); + if (rnd_app.draw_attached != NULL) + rnd_app.draw_attached(hidlib, 0); + if (rnd_app.draw_marks != NULL) + rnd_app.draw_marks(hidlib, 0); drawgl_flush(); ghid_gl_show_crosshair(hidlib, TRUE, ctx.view.X1, ctx.view.Y1, ctx.view.X2, ctx.view.Y2); Index: trunk/src/librnd/plugins/hid_lesstif/main.c =================================================================== --- trunk/src/librnd/plugins/hid_lesstif/main.c (revision 32698) +++ trunk/src/librnd/plugins/hid_lesstif/main.c (revision 32699) @@ -1137,9 +1137,10 @@ case LeaveNotify: crosshair_in_window = 0; - if (crosshair_on) - rnd_draw_attached(ltf_hidlib, 1); - rnd_draw_marks(ltf_hidlib, 1); + if (crosshair_on && (rnd_app.draw_attached != NULL)) + rnd_app.draw_attached(ltf_hidlib, 1); + if (rnd_app.draw_marks != NULL) + rnd_app.draw_marks(ltf_hidlib, 1); ShowCrosshair(rnd_false); need_idle_proc(); break; @@ -2112,8 +2113,10 @@ pixmap = window; need_redraw = 0; if (crosshair_on) { - rnd_draw_attached(ltf_hidlib, 1); - rnd_draw_marks(ltf_hidlib, 1); + if (rnd_app.draw_attached != NULL) + rnd_app.draw_attached(ltf_hidlib, 1); + if (rnd_app.draw_marks != NULL) + rnd_app.draw_marks(ltf_hidlib, 1); } pcb_ltf_preview_invalidate(NULL); @@ -2176,7 +2179,8 @@ if (invalidate_depth == 0 && crosshair_on) { save_pixmap = pixmap; pixmap = window; - rnd_draw_attached(ltf_hidlib, 1); + if (rnd_app.draw_attached != NULL) + rnd_app.draw_attached(ltf_hidlib, 1); pixmap = save_pixmap; } @@ -2206,7 +2210,8 @@ if (invalidate_depth == 0 && crosshair_on) { save_pixmap = pixmap; pixmap = window; - rnd_draw_marks(ltf_hidlib, 1); + if (rnd_app.draw_marks != NULL) + rnd_app.draw_marks(ltf_hidlib, 1); pixmap = save_pixmap; } Index: trunk/src/test-rnd.c =================================================================== --- trunk/src/test-rnd.c (revision 32698) +++ trunk/src/test-rnd.c (revision 32699) @@ -80,7 +80,7 @@ rnd_hid_destroy_gc(foobar_crosshair_gc); } -void rnd_draw_attached(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) +static void my_draw_attached(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) { rnd_render->set_drawing_mode(rnd_render, RND_HID_COMP_RESET, 1, NULL); rnd_render->set_drawing_mode(rnd_render, RND_HID_COMP_POSITIVE_XOR, 1, NULL); @@ -91,11 +91,6 @@ rnd_render->set_drawing_mode(rnd_render, RND_HID_COMP_FLUSH, 1, NULL); } -void rnd_draw_marks(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) -{ - -} - static void my_crosshair_move_to(rnd_hidlib_t *hl, rnd_coord_t abs_x, rnd_coord_t abs_y, int mouse_mot) { /* do the grid fit/snap then: update the GUI */ @@ -186,6 +181,7 @@ rnd_app.conf_sys_path = FOOBARSHAREDIR "/foobar-conf.lht"; rnd_app.crosshair_move_to = my_crosshair_move_to; + rnd_app.draw_attached = my_draw_attached; rnd_fix_locale_and_env(); Index: trunk/tests/librnd/glue.c =================================================================== --- trunk/tests/librnd/glue.c (revision 32698) +++ trunk/tests/librnd/glue.c (revision 32699) @@ -36,14 +36,6 @@ rnd_conf_reg_field_(NULL, 1, RND_CFN_COORD, "should_never_match", "dummy", 0); } -void rnd_draw_marks(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) -{ -} - -void rnd_draw_attached(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) -{ -} - void rnd_expose_main(rnd_hid_t *hid, const rnd_hid_expose_ctx_t *region, rnd_xform_t *xform_caller) { } Index: trunk/tests/rnd_printf/glue.c =================================================================== --- trunk/tests/rnd_printf/glue.c (revision 32698) +++ trunk/tests/rnd_printf/glue.c (revision 32699) @@ -41,14 +41,6 @@ { } -void rnd_draw_marks(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) -{ -} - -void rnd_draw_attached(rnd_hidlib_t *hidlib, rnd_bool inhibit_drawing_mode) -{ -} - void rnd_expose_main(rnd_hid_t *hid, const rnd_hid_expose_ctx_t *region, rnd_xform_t *xform_caller) { }