Index: trunk/src/change_act.c =================================================================== --- trunk/src/change_act.c (revision 25197) +++ trunk/src/change_act.c (revision 25198) @@ -468,7 +468,7 @@ defer_needs_update = 1; else { /* pcb_undo_inc_serial(); */ - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } } @@ -508,7 +508,7 @@ if ((type = pcb_search_screen(x, y, type, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { pcb_undo_save_serial(); if (pcb_chg_obj_name_query(ptr2)) { - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(pcb_true); pcb_actionl("DeleteRats", "AllRats", NULL); } Index: trunk/src/crosshair.c =================================================================== --- trunk/src/crosshair.c (revision 25197) +++ trunk/src/crosshair.c (revision 25198) @@ -535,7 +535,7 @@ void pcb_notify_crosshair_change(pcb_bool changes_complete) { if (pcb_gui->notify_crosshair_change) - pcb_gui->notify_crosshair_change(changes_complete); + pcb_gui->notify_crosshair_change(&PCB->hidlib, changes_complete); pcb_event(&PCB->hidlib, PCB_EVENT_CROSSHAIR_MOVE, "i", (int)changes_complete, NULL); } @@ -557,7 +557,7 @@ void pcb_notify_mark_change(pcb_bool changes_complete) { if (pcb_gui->notify_mark_change) - pcb_gui->notify_mark_change(changes_complete); + pcb_gui->notify_mark_change(&PCB->hidlib, changes_complete); } @@ -721,7 +721,7 @@ } if (redraw) { - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } } Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 25197) +++ trunk/src/draw.c (revision 25198) @@ -160,7 +160,7 @@ if (pcb_draw_inhibit) return; if (pcb_draw_invalidated.X1 <= pcb_draw_invalidated.X2 && pcb_draw_invalidated.Y1 <= pcb_draw_invalidated.Y2) - pcb_gui->invalidate_lr(pcb_draw_invalidated.X1, pcb_draw_invalidated.X2, pcb_draw_invalidated.Y1, pcb_draw_invalidated.Y2); + pcb_gui->invalidate_lr(&PCB->hidlib, pcb_draw_invalidated.X1, pcb_draw_invalidated.X2, pcb_draw_invalidated.Y1, pcb_draw_invalidated.Y2); /* shrink the update block */ pcb_draw_invalidated.X1 = pcb_draw_invalidated.Y1 = COORD_MAX; Index: trunk/src/file_act.c =================================================================== --- trunk/src/file_act.c (revision 25197) +++ trunk/src/file_act.c (revision 25198) @@ -161,7 +161,7 @@ pcb_layervis_reset_stack(); pcb_crosshair_set_range(0, 0, PCB->hidlib.size_x, PCB->hidlib.size_y); pcb_center_display(PCB->hidlib.size_x / 2, PCB->hidlib.size_y / 2); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_changed(0); pcb_notify_crosshair_change(pcb_true); PCB_ACT_IRES(0); Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 25197) +++ trunk/src/gui_act.c (revision 25198) @@ -115,7 +115,7 @@ else conf_set(CFR_DESIGN, "editor/subc_id", -1, "", POL_OVERWRITE); - pcb_gui->invalidate_all(); /* doesn't change too often, isn't worth anything more complicated */ + pcb_gui->invalidate_all(&PCB->hidlib); /* doesn't change too often, isn't worth anything more complicated */ pcb_draw(); return 0; } @@ -126,7 +126,7 @@ else conf_set(CFR_DESIGN, "editor/term_id", -1, "", POL_OVERWRITE); - pcb_gui->invalidate_all(); /* doesn't change too often, isn't worth anything more complicated */ + pcb_gui->invalidate_all(&PCB->hidlib); /* doesn't change too often, isn't worth anything more complicated */ pcb_draw(); return 0; } @@ -137,7 +137,7 @@ /* redraw layout */ case F_ClearAndRedraw: case F_Redraw: - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; /* toggle line-adjust flag */ @@ -207,12 +207,12 @@ case F_ToggleThindraw: conf_toggle_editor(thin_draw); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; case F_ToggleThindrawPoly: conf_toggle_editor(thin_draw_poly); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; case F_ToggleLockNames: @@ -227,7 +227,7 @@ case F_ToggleHideNames: conf_toggle_editor(hide_names); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; case F_ToggleStroke: @@ -264,7 +264,7 @@ case F_ToggleCheckPlanes: conf_toggle_editor(check_planes); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; case F_ToggleOrthoMove: @@ -273,7 +273,7 @@ case F_ToggleName: conf_toggle_editor(show_number); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; case F_ToggleClearLine: @@ -300,7 +300,7 @@ /* toggle displaying of the grid */ case F_Grid: conf_toggle_heditor(draw_grid); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); break; /* display the pinout of a subcircuit */ @@ -364,7 +364,7 @@ PCB->hidlib.grid_ox = pcb_get_value(argv[2].val.str, NULL, NULL, NULL); PCB->hidlib.grid_oy = pcb_get_value(argv[3].val.str, NULL, NULL, NULL); if (pcbhl_conf.editor.draw_grid) - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } break; @@ -892,7 +892,7 @@ } if (layer != CURRENT) { pcb_layervis_change_group_vis(pcb_layer_id(PCB->Data, layer), pcb_true, pcb_true); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } PCB_ACT_IRES(0); return 0; @@ -1338,7 +1338,7 @@ pcb_event(&PCB->hidlib, PCB_EVENT_LAYERS_CHANGED, NULL); if ((pcb_gui != NULL) && (pcb_exporter == NULL)) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); return 0; } @@ -1391,7 +1391,7 @@ pcb_event(&PCB->hidlib, PCB_EVENT_LAYERS_CHANGED, NULL); if ((pcb_gui != NULL) && (pcb_exporter == NULL)) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); return 0; } @@ -1436,7 +1436,7 @@ PCB->RatDraw = 0; pcb_layervis_change_group_vis(atoi(name)-1, 1, 1); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); return 0; } @@ -1517,7 +1517,7 @@ else PCB_ACT_FAIL(toggleview); pcb_layer_vis_change_all(PCB, open, vis); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); return 0; } @@ -1529,12 +1529,12 @@ } else if ((pcb_strcasecmp(name, "padstacks") == 0) || (pcb_strcasecmp(name, "vias") == 0) || (pcb_strcasecmp(name, "pins") == 0) || (pcb_strcasecmp(name, "pads") == 0)) { PCB->pstk_on = !PCB->pstk_on; - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); } else if (pcb_strcasecmp(name, "BackSide") == 0) { PCB->InvisibleObjectsOn = !PCB->InvisibleObjectsOn; - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); } else if (strncmp(name, "ui:", 3) == 0) { @@ -1545,7 +1545,7 @@ return 0; } ly->meta.real.vis = !ly->meta.real.vis; - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); } else { @@ -1553,7 +1553,7 @@ int id = strtol(name, &end, 10) - 1; if (*end == '\0') { /* integer layer */ pcb_layervis_change_group_vis(id, -1, 0); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); return 0; } @@ -1562,7 +1562,7 @@ if (ml != NULL) { pcb_bool *v = (pcb_bool *)((char *)PCB + ml->vis_offs); *v = !(*v); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); return 0; } Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 25197) +++ trunk/src/hid.h (revision 25198) @@ -255,10 +255,10 @@ int (*parse_arguments)(int *argc, char ***argv); /* This may be called to ask the GUI to force a redraw of a given area */ - void (*invalidate_lr)(pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom); - void (*invalidate_all)(void); - void (*notify_crosshair_change)(pcb_bool changes_complete); - void (*notify_mark_change)(pcb_bool changes_complete); + void (*invalidate_lr)(pcb_hidlib_t *hidlib, pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom); + void (*invalidate_all)(pcb_hidlib_t *hidlib); + void (*notify_crosshair_change)(pcb_hidlib_t *hidlib, pcb_bool changes_complete); + void (*notify_mark_change)(pcb_hidlib_t *hidlib, pcb_bool changes_complete); /* During redraw or print/export cycles, this is called once per layer group (physical layer); pusrpose/purpi are the extracted purpose field and its @@ -632,6 +632,6 @@ int pcb_hid_dock_enter(pcb_hid_dad_subdialog_t *sub, pcb_hid_dock_t where, const char *id); void pcb_hid_dock_leave(pcb_hid_dad_subdialog_t *sub); -#define pcb_hid_redraw() pcb_gui->invalidate_all() +#define pcb_hid_redraw(pcb) pcb_gui->invalidate_all(&pcb->hidlib) #endif Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 25197) +++ trunk/src/hid_nogui.c (revision 25198) @@ -71,12 +71,12 @@ CRASH("parse_arguments"); } -static void nogui_invalidate_lr(pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) +static void nogui_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) { CRASH("invalidate_lr"); } -static void nogui_invalidate_all(void) +static void nogui_invalidate_all(pcb_hidlib_t *hidlib) { CRASH("invalidate_all"); } Index: trunk/src/hidlib_conf.c =================================================================== --- trunk/src/hidlib_conf.c (revision 25197) +++ trunk/src/hidlib_conf.c (revision 25198) @@ -60,7 +60,7 @@ hidlib->grid = Grid; conf_set_design("editor/grid", "%$mS", Grid); if (pcbhl_conf.editor.draw_grid) - pcb_hid_redraw(); + pcb_gui->invalidate_all(hidlib); } } Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 25197) +++ trunk/src/layer_grp.c (revision 25198) @@ -45,7 +45,7 @@ if (!inhibit_notify) { \ pcb_event(&pcb->hidlib, PCB_EVENT_LAYERS_CHANGED, NULL); \ if ((pcb_gui != NULL) && (pcb_exporter == NULL)) \ - pcb_gui->invalidate_all(); \ + pcb_gui->invalidate_all(&pcb->hidlib); \ pcb_board_set_changed_flag(pcb_true); \ } \ } while(0) Index: trunk/src/main_act.c =================================================================== --- trunk/src/main_act.c (revision 25197) +++ trunk/src/main_act.c (revision 25198) @@ -411,7 +411,7 @@ defer_updates = 0; if (defer_needs_update) { pcb_undo_inc_serial(); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } fclose(fp); PCB_ACT_IRES(0); Index: trunk/src/netlist2.c =================================================================== --- trunk/src/netlist2.c (revision 25197) +++ trunk/src/netlist2.c (revision 25198) @@ -337,7 +337,7 @@ free(e->key); htsp_uninit(&sctx->found); if (sctx->changed) { - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); conf_core.temp.rat_warn = pcb_true; } } Index: trunk/src/netlist_act.c =================================================================== --- trunk/src/netlist_act.c (revision 25197) +++ trunk/src/netlist_act.c (revision 25198) @@ -269,7 +269,7 @@ free(refdes); } if (pcb_gui != NULL) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } else if (argc > 2) { pin_found = 1; @@ -278,12 +278,12 @@ func(net, term); } if (pcb_gui != NULL) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } else { func(net, NULL); if (pcb_gui != NULL) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } return pin_found; Index: trunk/src/obj_text.c =================================================================== --- trunk/src/obj_text.c (revision 25197) +++ trunk/src/obj_text.c (revision 25198) @@ -1398,7 +1398,7 @@ return; if (pcb_text_font_chg_data(PCB->Data, argv[1].d.i)) - pcb_gui->invalidate_all(); /* can't just redraw the text, as the old text may have been bigger, before the change! */ + pcb_gui->invalidate_all(&PCB->hidlib); /* can't just redraw the text, as the old text may have been bigger, before the change! */ pcb_trace("font change %d\n", argv[1].d.i); } Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 25197) +++ trunk/src/object_act.c (revision 25198) @@ -241,7 +241,7 @@ /* done with our action so increment the undo # */ pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(pcb_true); return 0; Index: trunk/src/rats_patch.c =================================================================== --- trunk/src/rats_patch.c (revision 25197) +++ trunk/src/rats_patch.c (revision 25198) @@ -443,7 +443,7 @@ pcb_undo_restore_serial(); if (changed) { pcb_undo_inc_serial(); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } return 0; } Index: trunk/src/tool_buffer.c =================================================================== --- trunk/src/tool_buffer.c (revision 25197) +++ trunk/src/tool_buffer.c (revision 25198) @@ -64,7 +64,7 @@ if (pcb_buffer_copy_to_layout(PCB, pcb_crosshair.AttachedObject.tx, pcb_crosshair.AttachedObject.ty)) { pcb_board_set_changed_flag(pcb_true); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } } Index: trunk/src_plugins/asm/asm.c =================================================================== --- trunk/src_plugins/asm/asm.c (revision 25197) +++ trunk/src_plugins/asm/asm.c (revision 25198) @@ -306,7 +306,7 @@ ly->meta.real.color = asm_ctx.layer_colors.array[n]; vtclr_uninit(&asm_ctx.layer_colors); } - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } /*** UI callbacks ***/ @@ -377,7 +377,7 @@ pcb_gui->attr_dlg_widget_state(hid_ctx, asm_ctx.wdoneg, isgrp | ispart); pcb_gui->attr_dlg_widget_state(hid_ctx, asm_ctx.wskipp, ispart); pcb_gui->attr_dlg_widget_state(hid_ctx, asm_ctx.wdonep, ispart); - pcb_hid_redraw(); /* for displaying the new selection */ + pcb_hid_redraw(PCB); /* for displaying the new selection */ } static void skip(void *hid_ctx, int pick_grp, pcb_hid_row_t *row) Index: trunk/src_plugins/autocrop/autocrop.c =================================================================== --- trunk/src_plugins/autocrop/autocrop.c (revision 25197) +++ trunk/src_plugins/autocrop/autocrop.c (revision 25198) @@ -65,7 +65,7 @@ pcb_draw_inhibit_dec(); pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(1); PCB_ACT_IRES(0); Index: trunk/src_plugins/autoplace/autoplace.c =================================================================== --- trunk/src_plugins/autoplace/autoplace.c (revision 25197) +++ trunk/src_plugins/autoplace/autoplace.c (revision 25198) @@ -799,7 +799,7 @@ if (changed) { pcb_rats_destroy(pcb_false); pcb_net_add_all_rats(PCB, PCB_RATACC_PRECISE); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } vtp0_uninit(&Selected); return changed; Index: trunk/src_plugins/autoroute/autoroute.c =================================================================== --- trunk/src_plugins/autoroute/autoroute.c (revision 25197) +++ trunk/src_plugins/autoroute/autoroute.c (revision 25198) @@ -4774,7 +4774,7 @@ pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } #if defined (ROUTE_DEBUG) aabort = 0; Index: trunk/src_plugins/ddraft/cli_line.c =================================================================== --- trunk/src_plugins/ddraft/cli_line.c (revision 25197) +++ trunk/src_plugins/ddraft/cli_line.c (revision 25198) @@ -74,7 +74,7 @@ pcb_ddraft_attached.line.Point1.Y = box.Y1; pcb_ddraft_attached.line.Point2.X = box.X2; pcb_ddraft_attached.line.Point2.Y = box.Y2; - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } return res; } Index: trunk/src_plugins/ddraft/ddraft.c =================================================================== --- trunk/src_plugins/ddraft/ddraft.c (revision 25197) +++ trunk/src_plugins/ddraft/ddraft.c (revision 25198) @@ -107,7 +107,7 @@ continue; } res += pcb_trim_split(edges, (pcb_any_obj_t *)ptr2, REMO_INVALID, x, y, trim); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } break; default: Index: trunk/src_plugins/dialogs/dlg_flag_edit.c =================================================================== --- trunk/src_plugins/dialogs/dlg_flag_edit.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_flag_edit.c (revision 25198) @@ -75,7 +75,7 @@ if (clr != 0) pcb_flag_change(ctx->pcb, PCB_CHGFLG_CLEAR, clr, ctx->obj_type, ctx->ptr1, ctx->obj, ctx->obj); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } Index: trunk/src_plugins/dialogs/dlg_layer_binding.c =================================================================== --- trunk/src_plugins/dialogs/dlg_layer_binding.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_layer_binding.c (revision 25198) @@ -228,11 +228,11 @@ lb_dialog2data(hid_ctx, ctx); if (ctx->subc != NULL) { if (pcb_subc_rebind(ctx->pcb, ctx->subc) > 0) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } else { /* buffer */ pcb_data_binding_update(ctx->pcb, ctx->data); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } lb_data2dialog(hid_ctx, ctx); /* update disables */ } Index: trunk/src_plugins/dialogs/dlg_lib_pstk.c =================================================================== --- trunk/src_plugins/dialogs/dlg_lib_pstk.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_lib_pstk.c (revision 25198) @@ -402,7 +402,7 @@ pcb_pstk_change_instance(ps, &to_pid, NULL, NULL, NULL, NULL); } - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } @@ -445,7 +445,7 @@ if (changed) { pcb_board_set_changed_flag(pcb_true); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } } Index: trunk/src_plugins/dialogs/dlg_netlist.c =================================================================== --- trunk/src_plugins/dialogs/dlg_netlist.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_netlist.c (revision 25198) @@ -227,7 +227,7 @@ pcb_message(PCB_MSG_ERROR, "Internal error: netlist_button_cb() called from an invalid widget\n"); return; } - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void netlist_claim_obj_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) Index: trunk/src_plugins/dialogs/dlg_padstack.c =================================================================== --- trunk/src_plugins/dialogs/dlg_padstack.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_padstack.c (revision 25198) @@ -219,7 +219,7 @@ lock--; pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_chg_protodup(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -237,7 +237,7 @@ pcb_pstk_change_instance(pse->ps, &proto_id, NULL, NULL, NULL, NULL); pse_ps2dlg(hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_chg_instance(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -260,7 +260,7 @@ lock--; pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_chg_prname(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -289,7 +289,7 @@ lock--; pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_chg_hole(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -314,7 +314,7 @@ lock--; pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_chg_proto_clr(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -361,7 +361,7 @@ lock--; pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_shape_del(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -373,7 +373,7 @@ pse_ps2dlg(pse->parent_hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_shape_hshadow(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -385,7 +385,7 @@ pse_ps2dlg(pse->parent_hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_shape_auto(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -431,7 +431,7 @@ pse_ps2dlg(pse->parent_hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_shape_copy(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -465,7 +465,7 @@ pse_ps2dlg(pse->parent_hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_shape_swap(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -499,7 +499,7 @@ pse_ps2dlg(pse->parent_hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } @@ -527,7 +527,7 @@ pse_ps2dlg(pse->parent_hid_ctx, pse); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pse_shape_shrink(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) @@ -622,7 +622,7 @@ pse->shape_chg = NULL; PCB_DAD_FREE(dlg); pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } /* Auto gen shape on a single layer */ @@ -725,7 +725,7 @@ pse_ps2dlg(hid_ctx, pse); PCB_DAD_SET_VALUE(hid_ctx, pse->tab, int_value, 1); /* switch to the prototype view where the new attributes are visible */ pse_change_callback(pse); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } void pcb_pstkedit_dialog(pse_t *pse, int target_tab) Index: trunk/src_plugins/dialogs/dlg_pref_color.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_color.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_pref_color.c (revision 25198) @@ -74,7 +74,7 @@ pref_ctx_t *ctx = caller_data; const char *path = attr->user_data; conf_setf(ctx->role, path, -1, "%s", attr->default_val.clr_value.str); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pref_color_layer_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *attr) Index: trunk/src_plugins/dialogs/dlg_pref_confedit.c =================================================================== --- trunk/src_plugins/dialogs/dlg_pref_confedit.c (revision 25197) +++ trunk/src_plugins/dialogs/dlg_pref_confedit.c (revision 25198) @@ -178,7 +178,7 @@ else if (ctx->role == CFR_DESIGN) pcb_board_set_changed_flag(1); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } static void pref_conf_editval_del_cb(void *hid_ctx, void *caller_data, pcb_hid_attribute_t *trigger_attr) Index: trunk/src_plugins/distalign/distalign.c =================================================================== --- trunk/src_plugins/distalign/distalign.c (revision 25197) +++ trunk/src_plugins/distalign/distalign.c (revision 25198) @@ -341,7 +341,7 @@ PCB_END_LOOP; if (changed) { pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(1); } free_subcs_by_pos(); @@ -510,7 +510,7 @@ } if (changed) { pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(1); } free_subcs_by_pos(); Index: trunk/src_plugins/distaligntext/distaligntext.c =================================================================== --- trunk/src_plugins/distaligntext/distaligntext.c (revision 25197) +++ trunk/src_plugins/distaligntext/distaligntext.c (revision 25198) @@ -397,7 +397,7 @@ if (changed) { pcb_undo_restore_serial(); pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(pcb_true); } free_texts_by_pos(); @@ -576,7 +576,7 @@ if (changed) { pcb_undo_restore_serial(); pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(pcb_true); } free_texts_by_pos(); Index: trunk/src_plugins/draw_fontsel/draw_fontsel.c =================================================================== --- trunk/src_plugins/draw_fontsel/draw_fontsel.c (revision 25197) +++ trunk/src_plugins/draw_fontsel/draw_fontsel.c (revision 25198) @@ -174,7 +174,7 @@ default: break; } - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } return 1; } Index: trunk/src_plugins/drc_orig/drc_orig.c =================================================================== --- trunk/src_plugins/drc_orig/drc_orig.c (revision 25197) +++ trunk/src_plugins/drc_orig/drc_orig.c (revision 25198) @@ -438,7 +438,7 @@ pcb_hid_progress(0, 0, NULL); pcb_layervis_restore_stack(); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } Index: trunk/src_plugins/export_oldconn/oldconn.c =================================================================== --- trunk/src_plugins/export_oldconn/oldconn.c (revision 25197) +++ trunk/src_plugins/export_oldconn/oldconn.c (revision 25198) @@ -232,7 +232,7 @@ if (conf_core.editor.beep_when_finished) pcb_gui->beep(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } static FILE *pcb_check_and_open_file(const char *Filename) Index: trunk/src_plugins/export_openems/mesh.c =================================================================== --- trunk/src_plugins/export_openems/mesh.c (revision 25197) +++ trunk/src_plugins/export_openems/mesh.c (revision 25198) @@ -1031,7 +1031,7 @@ mesh.ui_layer_xy->name = pcb_strdup(mesh.ui_name_xy); pcb_event(&PCB->hidlib, PCB_EVENT_LAYERS_CHANGED, NULL); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } pcb_mesh_t *pcb_mesh_get(const char *name) Index: trunk/src_plugins/extedit/extedit.c =================================================================== --- trunk/src_plugins/extedit/extedit.c (revision 25197) +++ trunk/src_plugins/extedit/extedit.c (revision 25198) @@ -311,7 +311,7 @@ break; } if (pcb_gui != NULL) - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); quit1:; pcb_tempfile_unlink(tmp_fn); Index: trunk/src_plugins/hid_batch/batch.c =================================================================== --- trunk/src_plugins/hid_batch/batch.c (revision 25197) +++ trunk/src_plugins/hid_batch/batch.c (revision 25198) @@ -197,11 +197,11 @@ return pcb_hid_parse_command_line(argc, argv); } -static void batch_invalidate_lr(pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) +static void batch_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) { } -static void batch_invalidate_all(void) +static void batch_invalidate_all(pcb_hidlib_t *hidlib) { } Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 25197) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 25198) @@ -134,7 +134,7 @@ gdk_gc_set_clip_mask(gc, NULL); } -static inline void ghid_gdk_draw_grid_global(void) +static inline void ghid_gdk_draw_grid_global(pcb_hidlib_t *hidlib) { render_priv_t *priv = gport->render_priv; pcb_coord_t x, y, x1, y1, x2, y2, grd; @@ -142,12 +142,12 @@ static GdkPoint *points = NULL; static int npoints = 0; - x1 = pcb_grid_fit(MAX(0, SIDE_X(&gport->view, gport->view.x0)), PCB->hidlib.grid, PCB->hidlib.grid_ox); - y1 = pcb_grid_fit(MAX(0, SIDE_Y(&gport->view, gport->view.y0)), PCB->hidlib.grid, PCB->hidlib.grid_oy); - x2 = pcb_grid_fit(MIN(PCB->hidlib.size_x, SIDE_X(&gport->view, gport->view.x0 + gport->view.width - 1)), PCB->hidlib.grid, PCB->hidlib.grid_ox); - y2 = pcb_grid_fit(MIN(PCB->hidlib.size_y, SIDE_Y(&gport->view, gport->view.y0 + gport->view.height - 1)), PCB->hidlib.grid, PCB->hidlib.grid_oy); + x1 = pcb_grid_fit(MAX(0, SIDE_X(&gport->view, gport->view.x0)), hidlib->grid, hidlib->grid_ox); + y1 = pcb_grid_fit(MAX(0, SIDE_Y(&gport->view, gport->view.y0)), hidlib->grid, hidlib->grid_oy); + x2 = pcb_grid_fit(MIN(PCB->hidlib.size_x, SIDE_X(&gport->view, gport->view.x0 + gport->view.width - 1)), hidlib->grid, hidlib->grid_ox); + y2 = pcb_grid_fit(MIN(PCB->hidlib.size_y, SIDE_Y(&gport->view, gport->view.y0 + gport->view.height - 1)), hidlib->grid, hidlib->grid_oy); - grd = PCB->hidlib.grid; + grd = hidlib->grid; if (Vz(grd) < conf_hid_gtk.plugins.hid_gtk.global_grid.min_dist_px) { if (!conf_hid_gtk.plugins.hid_gtk.global_grid.sparse) @@ -195,7 +195,7 @@ } } -static void ghid_gdk_draw_grid_local_(pcb_coord_t cx, pcb_coord_t cy, int radius) +static void ghid_gdk_draw_grid_local_(pcb_hidlib_t *hidlib, pcb_coord_t cx, pcb_coord_t cy, int radius) { render_priv_t *priv = gport->render_priv; static GdkPoint *points_base = NULL; @@ -219,8 +219,8 @@ recalc = 1; } - if (last_grid != PCB->hidlib.grid) { - last_grid = PCB->hidlib.grid; + if (last_grid != hidlib->grid) { + last_grid = hidlib->grid; recalc = 1; } @@ -232,8 +232,8 @@ int y2 = y*y; for(x = -radius; x <= radius; x++) { if (x*x + y2 < r2) { - points_base[npoints].x = x*PCB->hidlib.grid; - points_base[npoints].y = y*PCB->hidlib.grid; + points_base[npoints].x = x*hidlib->grid; + points_base[npoints].y = y*hidlib->grid; npoints++; } } @@ -253,10 +253,10 @@ static int grid_local_have_old = 0, grid_local_old_r = 0; static pcb_coord_t grid_local_old_x, grid_local_old_y; -static void ghid_gdk_draw_grid_local(pcb_coord_t cx, pcb_coord_t cy) +static void ghid_gdk_draw_grid_local(pcb_hidlib_t *hidlib, pcb_coord_t cx, pcb_coord_t cy) { if (grid_local_have_old) { - ghid_gdk_draw_grid_local_(grid_local_old_x, grid_local_old_y, grid_local_old_r); + ghid_gdk_draw_grid_local_(hidlib, grid_local_old_x, grid_local_old_y, grid_local_old_r); grid_local_have_old = 0; } @@ -263,21 +263,21 @@ if (!conf_hid_gtk.plugins.hid_gtk.local_grid.enable) return; - if ((Vz(PCB->hidlib.grid) < PCB_MIN_GRID_DISTANCE) || (!pcbhl_conf.editor.draw_grid)) + if ((Vz(hidlib->grid) < PCB_MIN_GRID_DISTANCE) || (!pcbhl_conf.editor.draw_grid)) return; /* cx and cy are the actual cursor snapped to wherever - round them to the nearest real grid point */ - cx = (cx / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_ox; - cy = (cy / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_oy; + cx = (cx / hidlib->grid) * hidlib->grid + hidlib->grid_ox; + cy = (cy / hidlib->grid) * hidlib->grid + hidlib->grid_oy; grid_local_have_old = 1; - ghid_gdk_draw_grid_local_(cx, cy, conf_hid_gtk.plugins.hid_gtk.local_grid.radius); + ghid_gdk_draw_grid_local_(hidlib, cx, cy, conf_hid_gtk.plugins.hid_gtk.local_grid.radius); grid_local_old_x = cx; grid_local_old_y = cy; grid_local_old_r = conf_hid_gtk.plugins.hid_gtk.local_grid.radius; } -static void ghid_gdk_draw_grid(void) +static void ghid_gdk_draw_grid(pcb_hidlib_t *hidlib) { static GdkColormap *colormap = NULL; render_priv_t *priv = gport->render_priv; @@ -304,15 +304,15 @@ } if (conf_hid_gtk.plugins.hid_gtk.local_grid.enable) { - ghid_gdk_draw_grid_local(grid_local_old_x, grid_local_old_y); + ghid_gdk_draw_grid_local(hidlib, grid_local_old_x, grid_local_old_y); return; } - ghid_gdk_draw_grid_global(); + ghid_gdk_draw_grid_global(hidlib); } /* ------------------------------------------------------------ */ -static void ghid_gdk_draw_bg_image(void) +static void ghid_gdk_draw_bg_image(pcb_hidlib_t *hidlib) { static GdkPixbuf *pixbuf; GdkInterpType interp_type; @@ -337,8 +337,8 @@ src_y = 0; } - w = PCB->hidlib.size_x / gport->view.coord_per_px; - h = PCB->hidlib.size_y / gport->view.coord_per_px; + w = hidlib->size_x / gport->view.coord_per_px; + h = hidlib->size_y / gport->view.coord_per_px; src_x = src_x / gport->view.coord_per_px; src_y = src_y / gport->view.coord_per_px; dst_x = dst_x / gport->view.coord_per_px; @@ -1027,7 +1027,7 @@ gdk_draw_rectangle(priv->out_clip, priv->clip_gc, TRUE, x1, y1, x2 - x1 + 1, y2 - y1 + 1); } -static void redraw_region(GdkRectangle * rect) +static void redraw_region(pcb_hidlib_t *hidlib, GdkRectangle *rect) { int eleft, eright, etop, ebottom; pcb_hid_expose_ctx_t ctx; @@ -1057,15 +1057,15 @@ ctx.view.X2 = MAX(Px(priv->clip_rect.x), Px(priv->clip_rect.x + priv->clip_rect.width + 1)); ctx.view.Y2 = MAX(Py(priv->clip_rect.y), Py(priv->clip_rect.y + priv->clip_rect.height + 1)); - ctx.view.X1 = MAX(0, MIN(PCB->hidlib.size_x, ctx.view.X1)); - ctx.view.X2 = MAX(0, MIN(PCB->hidlib.size_x, ctx.view.X2)); - ctx.view.Y1 = MAX(0, MIN(PCB->hidlib.size_y, ctx.view.Y1)); - ctx.view.Y2 = MAX(0, MIN(PCB->hidlib.size_y, ctx.view.Y2)); + ctx.view.X1 = MAX(0, MIN(hidlib->size_x, ctx.view.X1)); + ctx.view.X2 = MAX(0, MIN(hidlib->size_x, ctx.view.X2)); + ctx.view.Y1 = MAX(0, MIN(hidlib->size_y, ctx.view.Y1)); + ctx.view.Y2 = MAX(0, MIN(hidlib->size_y, ctx.view.Y2)); eleft = Vx(0); - eright = Vx(PCB->hidlib.size_x); + eright = Vx(hidlib->size_x); etop = Vy(0); - ebottom = Vy(PCB->hidlib.size_y); + ebottom = Vy(hidlib->size_y); if (eleft > eright) { int tmp = eleft; eleft = eright; @@ -1096,10 +1096,10 @@ gdk_draw_rectangle(priv->out_pixel, priv->bg_gc, 1, eleft, etop, eright - eleft + 1, ebottom - etop + 1); - ghid_gdk_draw_bg_image(); + ghid_gdk_draw_bg_image(hidlib); pcb_hid_expose_all(>k2_gdk_hid, &ctx, NULL); - ghid_gdk_draw_grid(); + ghid_gdk_draw_grid(hidlib); /* In some cases we are called with the crosshair still off */ if (priv->attached_invalidate_depth == 0) @@ -1115,7 +1115,7 @@ gdk_gc_set_clip_mask(priv->bg_gc, NULL); } -static void ghid_gdk_invalidate_lr(pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) +static void ghid_gdk_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) { int dleft, dright, dtop, dbottom; int minx, maxx, miny, maxy; @@ -1136,20 +1136,20 @@ rect.width = maxx - minx; rect.height = maxy - miny; - redraw_region(&rect); + redraw_region(hidlib, &rect); ghid_gdk_screen_update(); } -static void ghid_gdk_invalidate_all() +static void ghid_gdk_invalidate_all(pcb_hidlib_t *hidlib) { if (ghidgui && ghidgui->topwin.menu.menu_bar) { - redraw_region(NULL); + redraw_region(hidlib, NULL); ghid_gdk_screen_update(); } } -static void ghid_gdk_notify_crosshair_change(pcb_bool changes_complete) +static void ghid_gdk_notify_crosshair_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { render_priv_t *priv = gport->render_priv; @@ -1168,7 +1168,7 @@ * As we know the crosshair will have been shown already, we must * repaint the entire view to be sure not to leave an artaefact. */ - ghid_gdk_invalidate_all(); + ghid_gdk_invalidate_all(hidlib); return; } @@ -1184,7 +1184,7 @@ } } -static void ghid_gdk_notify_mark_change(pcb_bool changes_complete) +static void ghid_gdk_notify_mark_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { render_priv_t *priv = gport->render_priv; @@ -1202,7 +1202,7 @@ * As we know the mark will have been shown already, we must * repaint the entire view to be sure not to leave an artaefact. */ - ghid_gdk_invalidate_all(); + ghid_gdk_invalidate_all(hidlib); return; } Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 25197) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 25198) @@ -182,7 +182,7 @@ return rv; } -void ghid_gl_draw_grid_local(pcb_coord_t cx, pcb_coord_t cy) +void ghid_gl_draw_grid_local(pcb_hidlib_t *hidlib, pcb_coord_t cx, pcb_coord_t cy) { /* cx and cy are the actual cursor snapped to wherever - round them to the nearest real grid point */ grid_local_x = (cx / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_ox; @@ -543,18 +543,18 @@ hidgl_fill_rect(x1, y1, x2, y2); } -void ghid_gl_invalidate_all() +void ghid_gl_invalidate_all(pcb_hidlib_t *hidlib) { if (ghidgui && ghidgui->topwin.menu.menu_bar) ghid_draw_area_update(gport, NULL); } -void ghid_gl_invalidate_lr(pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) +void ghid_gl_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) { ghid_gl_invalidate_all(); } -static void ghid_gl_notify_crosshair_change(pcb_bool changes_complete) +static void ghid_gl_notify_crosshair_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { /* We sometimes get called before the GUI is up */ if (gport->drawing_area == NULL) @@ -564,7 +564,7 @@ ghid_gl_invalidate_all(); } -static void ghid_gl_notify_mark_change(pcb_bool changes_complete) +static void ghid_gl_notify_mark_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { /* We sometimes get called before the GUI is up */ if (gport->drawing_area == NULL) @@ -571,7 +571,7 @@ return; /* FIXME: We could just invalidate the bounds of the mark? */ - ghid_gl_invalidate_all(); + ghid_gl_invalidate_all(hidlib); } static void pcb_gl_draw_right_cross(GLint x, GLint y, GLint z) Index: trunk/src_plugins/hid_lesstif/lesstif.h =================================================================== --- trunk/src_plugins/hid_lesstif/lesstif.h (revision 25197) +++ trunk/src_plugins/hid_lesstif/lesstif.h (revision 25198) @@ -40,7 +40,7 @@ extern void lesstif_need_idle_proc(void); extern void lesstif_show_crosshair(int); -extern void lesstif_invalidate_all(void); +extern void lesstif_invalidate_all(pcb_hidlib_t *hidlib); extern void lesstif_coords_to_pcb(int, int, pcb_coord_t *, pcb_coord_t *); extern void lesstif_get_xy(const char *msg); extern void lesstif_update_widget_flags(const char *cookie); Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 25197) +++ trunk/src_plugins/hid_lesstif/main.c (revision 25198) @@ -765,7 +765,7 @@ set_scroll(hscroll, view_left_x, view_width, ltf_hidlib->size_x); set_scroll(vscroll, view_top_y, view_height, ltf_hidlib->size_y); - lesstif_invalidate_all(); + lesstif_invalidate_all(ltf_hidlib); } static void zoom_max() @@ -1156,7 +1156,7 @@ static void scroll_callback(Widget scroll, int *view_dim, XmScrollBarCallbackStruct * cbs) { *view_dim = cbs->value; - lesstif_invalidate_all(); + lesstif_invalidate_all(ltf_hidlib); } static void work_area_make_pixmaps(Dimension width, Dimension height) @@ -1292,7 +1292,7 @@ XtRemoveCallback(work_area, XmNexposeCallback, (XtCallbackProc) work_area_first_expose, 0); XtAddCallback(work_area, XmNexposeCallback, (XtCallbackProc) work_area_expose, 0); - lesstif_invalidate_all(); + lesstif_invalidate_all(ltf_hidlib); } static Widget make_message(const char *name, Widget left, int resizeable) @@ -2404,7 +2404,7 @@ idle_proc_set = 1; } -static void lesstif_invalidate_lr(pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) +static void lesstif_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) { if (!window) return; @@ -2413,13 +2413,13 @@ need_idle_proc(); } -void lesstif_invalidate_all(void) +void lesstif_invalidate_all(pcb_hidlib_t *hidlib) { - if (ltf_hidlib != NULL) - lesstif_invalidate_lr(0, ltf_hidlib->size_x, 0, ltf_hidlib->size_y); + if (hidlib != NULL) + lesstif_invalidate_lr(hidlib, 0, hidlib->size_x, 0, hidlib->size_y); } -static void lesstif_notify_crosshair_change(pcb_bool changes_complete) +static void lesstif_notify_crosshair_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { static int invalidate_depth = 0; Pixmap save_pixmap; @@ -2453,7 +2453,7 @@ invalidate_depth++; } -static void lesstif_notify_mark_change(pcb_bool changes_complete) +static void lesstif_notify_mark_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { static int invalidate_depth = 0; Pixmap save_pixmap; @@ -3116,7 +3116,7 @@ if (!lesstif_active) return; if (strncmp(cfg->hash_path, "appearance/color/", 17) == 0) - lesstif_invalidate_all(); + lesstif_invalidate_all(ltf_hidlib); if (strncmp(cfg->hash_path, "rc/cli_", 7) == 0) { stdarg_n = 0; stdarg(XmNlabelString, XmStringCreatePCB(pcb_cli_prompt(":"))); Index: trunk/src_plugins/hid_remote/proto.c =================================================================== --- trunk/src_plugins/hid_remote/proto.c (revision 25197) +++ trunk/src_plugins/hid_remote/proto.c (revision 25198) @@ -95,7 +95,7 @@ send_end(&pctx); } -void proto_send_invalidate_all() +void proto_send_invalidate_all(pcb_hidlib_t *hidlib) { send_begin(&pctx, "inval"); send_open(&pctx, 0, 1); Index: trunk/src_plugins/hid_remote/proto.h =================================================================== --- trunk/src_plugins/hid_remote/proto.h (revision 25197) +++ trunk/src_plugins/hid_remote/proto.h (revision 25198) @@ -30,7 +30,7 @@ void remote_proto_send_brddim(pcb_coord_t w, pcb_coord_t h); int remote_proto_send_ready(); void proto_send_invalidate(int l, int r, int t, int b); -void proto_send_invalidate_all(); +void proto_send_invalidate_all(pcb_hidlib_t *hidlib); int pcb_remote_new_layer_group(const char *name, pcb_layergrp_id_t idx, unsigned int flags); int pcb_remote_new_layer(const char *name, pcb_layer_id_t idx, unsigned int group); Index: trunk/src_plugins/hid_remote/remote.c =================================================================== --- trunk/src_plugins/hid_remote/remote.c (revision 25197) +++ trunk/src_plugins/hid_remote/remote.c (revision 25198) @@ -124,14 +124,14 @@ return pcb_hid_parse_command_line(argc, argv); } -static void remote_invalidate_lr(pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) +static void remote_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t l, pcb_coord_t r, pcb_coord_t t, pcb_coord_t b) { proto_send_invalidate(l,r, t, b); } -static void remote_invalidate_all(void) +static void remote_invalidate_all(pcb_hidlib_t *hidlib) { - proto_send_invalidate_all(); + proto_send_invalidate_all(hidlib); } static int remote_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) Index: trunk/src_plugins/lib_gtk_common/dlg_topwin.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_topwin.c (revision 25197) +++ trunk/src_plugins/lib_gtk_common/dlg_topwin.c (revision 25198) @@ -174,7 +174,7 @@ tw->com->note_event_location(NULL); pcb_tool_adjust_attached_objects(); - tw->com->invalidate_all(); + tw->com->invalidate_all(tw->com->hidlib); g_idle_add(ghid_idle_cb, tw); return FALSE; } @@ -379,7 +379,7 @@ static gboolean drawing_area_enter_cb(GtkWidget *w, pcb_gtk_expose_t *p, void *user_data) { pcb_gtk_topwin_t *tw = user_data; - tw->com->invalidate_all(); + tw->com->invalidate_all(tw->com->hidlib); return FALSE; } Index: trunk/src_plugins/lib_gtk_common/glue.h =================================================================== --- trunk/src_plugins/lib_gtk_common/glue.h (revision 25197) +++ trunk/src_plugins/lib_gtk_common/glue.h (revision 25198) @@ -26,7 +26,7 @@ gboolean (*preview_expose)(GtkWidget *widget, pcb_gtk_expose_t *p, pcb_hid_expose_t expcall, pcb_hid_expose_ctx_t *ctx); void (*load_bg_image)(void); void (*init_renderer)(int *argc, char ***argv, void *port); - void (*draw_grid_local)(pcb_coord_t cx, pcb_coord_t cy); + void (*draw_grid_local)(pcb_hidlib_t *hidlib, pcb_coord_t cx, pcb_coord_t cy); /* main window */ void (*window_set_name_label)(gchar *name); @@ -43,7 +43,7 @@ /* screen */ void (*mode_cursor_main)(int mode); - void (*invalidate_all)(); + void (*invalidate_all)(pcb_hidlib_t *hidlib); void (*pan_common)(void); void (*port_ranges_scale)(void); void (*screen_update)(void); Index: trunk/src_plugins/lib_gtk_common/wt_layersel.c =================================================================== --- trunk/src_plugins/lib_gtk_common/wt_layersel.c (revision 25197) +++ trunk/src_plugins/lib_gtk_common/wt_layersel.c (revision 25198) @@ -187,7 +187,7 @@ change_selection:; pcb_layervis_change_group_vis(pcb_layer_id(PCB->Data, l), 1, 1); - ls->com->invalidate_all(); + ls->com->invalidate_all(&PCB->hidlib); pcb_gtk_layersel_vis_update(ls); } @@ -257,7 +257,7 @@ for(n = 0; n < lsg->grp->len; n++) layersel_lyr_vis_sync(&lsg->layer[n]); group_vis_sync(lsg); - ls->com->invalidate_all(); + ls->com->invalidate_all(&PCB->hidlib); pcb_event(ls->com->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); break; case 3: @@ -317,7 +317,7 @@ pcb_gtk_layersel_vis_update(ls); /* rather do a full redraw because the selection may have changed */ } - ls->com->invalidate_all(); + ls->com->invalidate_all(&PCB->hidlib); pcb_event(ls->com->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); layer_popup(ls, event->button.button, lsl->lid, lsl->lsg->grp); break; @@ -337,7 +337,7 @@ case 3: if ((lsl->ev_selected == NULL) || (lsl->ev_selected(lsl, 1) >= 0)) { pcb_layervis_change_group_vis(lsl->lid, 1, 1); - ls->com->invalidate_all(); + ls->com->invalidate_all(&PCB->hidlib); pcb_gtk_layersel_vis_update(ls); /* need to do a full redraw because of side effects of special layer selections (e.g. Rats') */ } pcb_event(ls->com->hidlib, PCB_EVENT_LAYERVIS_CHANGED, NULL); Index: trunk/src_plugins/lib_gtk_hid/glue_common.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_common.c (revision 25197) +++ trunk/src_plugins/lib_gtk_hid/glue_common.c (revision 25198) @@ -39,7 +39,7 @@ gport->view.x0 = gtk_adjustment_get_value(h_adj); gport->view.y0 = gtk_adjustment_get_value(v_adj); - ghid_invalidate_all(); + ghid_invalidate_all(ghidgui->common.hidlib); } static void ghid_pan_common(void) @@ -85,7 +85,7 @@ static void ghid_port_button_press_main(void) { - ghid_invalidate_all(); + ghid_invalidate_all(ghidgui->common.hidlib); ghid_window_set_name_label(ghidgui->common.hidlib->name); if (!gport->view.panning) g_idle_add(ghid_idle_cb, &ghidgui->topwin); @@ -94,7 +94,7 @@ static void ghid_port_button_release_main(void) { pcb_tool_adjust_attached_objects(); - ghid_invalidate_all(); + ghid_invalidate_all(ghidgui->common.hidlib); ghid_window_set_name_label(ghidgui->common.hidlib->name); g_idle_add(ghid_idle_cb, &ghidgui->topwin); Index: trunk/src_plugins/lib_gtk_hid/glue_event.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_event.c (revision 25197) +++ trunk/src_plugins/lib_gtk_hid/glue_event.c (revision 25198) @@ -19,7 +19,7 @@ { /* Sync gui status display with pcb state */ pcb_tool_adjust_attached_objects(); - ghid_invalidate_all(); + ghid_invalidate_all(hidlib); ghidgui->common.window_set_name_label(ghidgui->common.hidlib->name); /* Sync menu checkboxes */ Index: trunk/src_plugins/lib_gtk_hid/glue_hid.c =================================================================== --- trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 25197) +++ trunk/src_plugins/lib_gtk_hid/glue_hid.c (revision 25198) @@ -143,7 +143,7 @@ } pcb_gtk_tw_ranges_scale(&ghidgui->topwin); - ghid_invalidate_all(); + ghid_invalidate_all(ghidgui->common.hidlib); return 0; } @@ -279,7 +279,7 @@ if (gport->drawing_area == NULL) return; - ghidgui->common.draw_grid_local(x, y); + ghidgui->common.draw_grid_local(ghidgui->common.hidlib, x, y); gdk_window_get_origin(gtk_widget_get_window(gport->drawing_area), &offset_x, &offset_y); pcb_gtk_crosshair_set(x, y, action, offset_x, offset_y, &gport->view); } @@ -444,7 +444,7 @@ gdk_display_sync(display); time(&start); do { - ghid_invalidate_all(); + ghid_invalidate_all(ghidgui->common.hidlib); gdk_window_process_updates(window, FALSE); time(&end); i++; Index: trunk/src_plugins/lib_gtk_hid/render.h =================================================================== --- trunk/src_plugins/lib_gtk_hid/render.h (revision 25197) +++ trunk/src_plugins/lib_gtk_hid/render.h (revision 25198) @@ -14,7 +14,7 @@ /* Utility functions for renderers to call ***/ void ghid_draw_area_update(GHidPort *out, GdkRectangle *rect); -static inline void ghid_invalidate_all(void) { pcb_gui->invalidate_all(); } +static inline void ghid_invalidate_all(pcb_hidlib_t *hidlib) { pcb_gui->invalidate_all(hidlib); } void ghid_drawing_area_configure_hook(void *out); #endif Index: trunk/src_plugins/lib_hid_common/lead_user.c =================================================================== --- trunk/src_plugins/lib_hid_common/lead_user.c (revision 25197) +++ trunk/src_plugins/lib_hid_common/lead_user.c (revision 25198) @@ -39,6 +39,7 @@ static pcb_coord_t leadx, leady, step; static pcb_bool lead; static pcb_hidval_t lead_timer; +static pcb_hidlib_t *lead_hidlib; static void lead_cb(pcb_hidval_t user_data) { @@ -47,13 +48,13 @@ step = sin(p) * LEAD_ANIM_AMP - LEAD_ANIM_AMP; p += LEAD_ANIM_SPEED; - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(lead_hidlib); if (lead) lead_timer = pcb_gui->add_timer(lead_cb, LEAD_PERIOD_MS, user_data); } -static void pcb_lead_user_to_location(pcb_coord_t x, pcb_coord_t y, pcb_bool enabled) +static void pcb_lead_user_to_location(pcb_hidlib_t *hidlib, pcb_coord_t x, pcb_coord_t y, pcb_bool enabled) { pcb_hidval_t user_data; @@ -60,12 +61,13 @@ if (lead) { pcb_gui->stop_timer(lead_timer); lead = enabled; - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(lead_hidlib); } leadx = x; leady = y; lead = enabled; + lead_hidlib = hidlib; if (enabled) lead_timer = pcb_gui->add_timer(lead_cb, LEAD_PERIOD_MS, user_data); @@ -78,7 +80,7 @@ if ((argv[1].type != PCB_EVARG_COORD) || (argv[2].type != PCB_EVARG_COORD) || (argv[3].type != PCB_EVARG_INT)) return; - pcb_lead_user_to_location(argv[1].d.c, argv[2].d.c, argv[3].d.i); + pcb_lead_user_to_location(hidlib, argv[1].d.c, argv[2].d.c, argv[3].d.i); } Index: trunk/src_plugins/lib_hid_pcbui/act.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/act.c (revision 25197) +++ trunk/src_plugins/lib_hid_pcbui/act.c (revision 25198) @@ -299,7 +299,7 @@ pcb_gui->pan(pcb_round(x + xoffs), pcb_round(y + yoffs), 0); pcb_gui->set_crosshair(x, y, HID_SC_PAN_VIEWPORT); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); PCB_ACT_IRES(0); return 0; Index: trunk/src_plugins/lib_hid_pcbui/lib_hid_pcbui.c =================================================================== --- trunk/src_plugins/lib_hid_pcbui/lib_hid_pcbui.c (revision 25197) +++ trunk/src_plugins/lib_hid_pcbui/lib_hid_pcbui.c (revision 25198) @@ -92,6 +92,7 @@ conf_hid_unreg(toolbar_cookie); conf_hid_unreg(status_cookie); conf_hid_unreg(status_rd_cookie); + conf_hid_unreg(infobar_cookie); } #include "dolists.h" Index: trunk/src_plugins/loghid/hid-logger.c =================================================================== --- trunk/src_plugins/loghid/hid-logger.c (revision 25197) +++ trunk/src_plugins/loghid/hid-logger.c (revision 25198) @@ -36,28 +36,28 @@ return delegatee_->parse_arguments(argc, argv); } -static void log_invalidate_lr(pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) +static void log_invalidate_lr(pcb_hidlib_t *hidlib, pcb_coord_t left, pcb_coord_t right, pcb_coord_t top, pcb_coord_t bottom) { pcb_fprintf(out_, "invalidate_lr(%mm, %mm, %mm, %mm)\n", left, right, top, bottom); - delegatee_->invalidate_lr(left, right, top, bottom); + delegatee_->invalidate_lr(hidlib, left, right, top, bottom); } -static void log_invalidate_all(void) +static void log_invalidate_all(pcb_hidlib_t *hidlib) { pcb_fprintf(out_, "invalidate_all()\n"); - delegatee_->invalidate_all(); + delegatee_->invalidate_all(hidlib); } -static void log_notify_crosshair_change(pcb_bool changes_complete) +static void log_notify_crosshair_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { pcb_fprintf(out_, "pcb_notify_crosshair_change(%s)\n", changes_complete ? "true" : "false"); - delegatee_->notify_crosshair_change(changes_complete); + delegatee_->notify_crosshair_change(hidlib, changes_complete); } -static void log_notify_mark_change(pcb_bool changes_complete) +static void log_notify_mark_change(pcb_hidlib_t *hidlib, pcb_bool changes_complete) { pcb_fprintf(out_, "pcb_notify_mark_change(%s)\n", changes_complete ? "true" : "false"); - delegatee_->notify_mark_change(changes_complete); + delegatee_->notify_mark_change(hidlib, changes_complete); } static int log_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty, pcb_xform_t **xform) Index: trunk/src_plugins/propedit/propdlg.c =================================================================== --- trunk/src_plugins/propedit/propdlg.c (revision 25197) +++ trunk/src_plugins/propedit/propdlg.c (revision 25198) @@ -337,7 +337,7 @@ pcb_propsel_set(&ctx->pe, r->user_data, &sctx); prop_refresh(ctx); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); } Index: trunk/src_plugins/puller/puller.c =================================================================== --- trunk/src_plugins/puller/puller.c (revision 25197) +++ trunk/src_plugins/puller/puller.c (revision 25198) @@ -439,7 +439,7 @@ pcb_move_obj(PCB_OBJ_LINE_POINT, CURRENT, the_line, &(the_line->Point2), x - the_line->Point2.X, y - the_line->Point2.Y); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); pcb_undo_inc_serial(); PCB_ACT_IRES(0); Index: trunk/src_plugins/query/query_act.c =================================================================== --- trunk/src_plugins/query/query_act.c (revision 25197) +++ trunk/src_plugins/query/query_act.c (revision 25198) @@ -164,7 +164,7 @@ printf("Failed to run the query\n"); if (sel.cnt > 0) { pcb_board_set_changed_flag(pcb_true); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } PCB_ACT_IRES(0); return 0; @@ -176,7 +176,7 @@ printf("Failed to run the query\n"); if (sel.cnt > 0) { pcb_board_set_changed_flag(pcb_true); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); } PCB_ACT_IRES(0); return 0; Index: trunk/src_plugins/script/live_script.c =================================================================== --- trunk/src_plugins/script/live_script.c (revision 25197) +++ trunk/src_plugins/script/live_script.c (revision 25198) @@ -32,6 +32,7 @@ #include #include "actions.h" +#include "board.h" #include "plugins.h" #include "hid_cfg.h" #include "hid_dad.h" @@ -298,7 +299,7 @@ pcb_undo_inc_serial(); lvs->undo_post = pcb_undo_serial(); - pcb_gui->invalidate_all(); /* if the script drew anything, get it displayed */ + pcb_gui->invalidate_all(&PCB->hidlib); /* if the script drew anything, get it displayed */ pcb_tempfile_unlink(fn); return res; @@ -319,7 +320,7 @@ return 1; } pcb_undo_above(lvs->undo_pre); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); return 0; } Index: trunk/src_plugins/smartdisperse/smartdisperse.c =================================================================== --- trunk/src_plugins/smartdisperse/smartdisperse.c (revision 25197) +++ trunk/src_plugins/smartdisperse/smartdisperse.c (revision 25198) @@ -217,7 +217,7 @@ htpi_uninit(&visited); pcb_undo_inc_serial(); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_board_set_changed_flag(1); PCB_ACT_IRES(0); Index: trunk/src_plugins/teardrops/teardrops.c =================================================================== --- trunk/src_plugins/teardrops/teardrops.c (revision 25197) +++ trunk/src_plugins/teardrops/teardrops.c (revision 25198) @@ -258,7 +258,7 @@ check_pstk((pcb_pstk_t *)b); pcb_r_end(&it); - pcb_gui->invalidate_all(); + pcb_gui->invalidate_all(&PCB->hidlib); if (new_arcs) pcb_undo_inc_serial(); Index: trunk/src_plugins/vendordrill/vendor.c =================================================================== --- trunk/src_plugins/vendordrill/vendor.c (revision 25197) +++ trunk/src_plugins/vendordrill/vendor.c (revision 25198) @@ -372,7 +372,7 @@ */ if (changed) { pcb_board_set_changed_flag(pcb_true); - pcb_hid_redraw(); + pcb_hid_redraw(PCB); pcb_undo_inc_serial(); } }