Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 26775) +++ trunk/src/draw.c (revision 26776) @@ -174,12 +174,12 @@ if (plated && pcb_layer_gui_set_vlayer(PCB, PCB_VLY_PLATED_DRILL, 0, &info->xform_exporter)) { pcb_draw_pstk_holes(info, gid, PCB_PHOLE_PLATED); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } if (unplated && pcb_layer_gui_set_vlayer(PCB, PCB_VLY_UNPLATED_DRILL, 0, &info->xform_exporter)) { pcb_draw_pstk_holes(info, gid, PCB_PHOLE_UNPLATED); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -191,22 +191,22 @@ if (pcb_layer_gui_set_vlayer(PCB, PCB_VLY_TOP_ASSY, 0, &info->xform_exporter)) { pcb_draw_assembly(info, PCB_LYT_TOP); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } if (pcb_layer_gui_set_vlayer(PCB, PCB_VLY_BOTTOM_ASSY, 0, &info->xform_exporter)) { pcb_draw_assembly(info, PCB_LYT_BOTTOM); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } if (pcb_layer_gui_set_vlayer(PCB, PCB_VLY_FAB, 0, &info->xform_exporter)) { pcb_stub_draw_fab(info, pcb_draw_out.fgGC, &hid_exp); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } if (pcb_layer_gui_set_vlayer(PCB, PCB_VLY_CSECT, 0, &info->xform_exporter)) { pcb_stub_draw_csect(pcb_draw_out.fgGC, &hid_exp); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -240,7 +240,7 @@ } if (have_canvas) pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -278,7 +278,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, drawn_area); pcb_draw_rats(drawn_area); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -367,7 +367,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, pcb_draw_out.direct, info->drawn_area); pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } /* Draw far side doc and silks */ @@ -398,7 +398,7 @@ } pcb_draw_layer_grp(info, group, is_current); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -416,13 +416,13 @@ gid = pcb_layergrp_get_top_mask(); if ((gid >= 0) && (pcb_layer_gui_set_glayer(PCB, gid, 0, &info->xform_exporter))) { pcb_draw_mask(info, PCB_COMPONENT_SIDE); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } gid = pcb_layergrp_get_bottom_mask(); if ((gid >= 0) && (pcb_layer_gui_set_glayer(PCB, gid, 0, &info->xform_exporter))) { pcb_draw_mask(info, PCB_SOLDER_SIDE); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } /* Draw doc and silks */ @@ -448,7 +448,7 @@ paste_empty = pcb_layergrp_is_empty(PCB, gid); if ((gid >= 0) && (pcb_layer_gui_set_glayer(PCB, gid, paste_empty, &info->xform_exporter))) { pcb_draw_paste(info, PCB_COMPONENT_SIDE); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } gid = pcb_layergrp_get_bottom_paste(); @@ -456,7 +456,7 @@ paste_empty = pcb_layergrp_is_empty(PCB, gid); if ((gid >= 0) && (pcb_layer_gui_set_glayer(PCB, gid, paste_empty, &info->xform_exporter))) { pcb_draw_paste(info, PCB_SOLDER_SIDE); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } pcb_draw_boundary_mech(info); @@ -1045,7 +1045,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, 1, &e->view); e->expose_cb(pcb_draw_out.fgGC, e); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, 1, &e->view); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); expose_end(&save); } Index: trunk/src/draw_ly_spec.c =================================================================== --- trunk/src/draw_ly_spec.c (revision 26775) +++ trunk/src/draw_ly_spec.c (revision 26776) @@ -174,7 +174,7 @@ comp_finish(&cctx); } if (setgrp) - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -255,7 +255,7 @@ pcb_draw_layer(info, ly); } pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } @@ -273,7 +273,7 @@ pcb_gui->draw_rect(pcb_draw_out.fgGC, 0, 0, PCB->hidlib.size_x, PCB->hidlib.size_y); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } /* draw slots */ @@ -288,7 +288,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); pcb_draw_pstk_slots(info, uslot->meta.real.grp, PCB_PHOLE_UNPLATED | PCB_PHOLE_BB); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } if ((pslot != NULL) && (pslot->meta.real.vis)) { @@ -297,7 +297,7 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, pcb_draw_out.direct, info->drawn_area); pcb_draw_pstk_slots(info, pslot->meta.real.grp, PCB_PHOLE_PLATED | PCB_PHOLE_BB); pcb_gui->set_drawing_mode(PCB_HID_COMP_FLUSH, pcb_draw_out.direct, info->drawn_area); - pcb_gui->end_layer(); + pcb_gui->end_layer(pcb_gui); } } } Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 26775) +++ trunk/src/hid.h (revision 26776) @@ -265,16 +265,16 @@ functions. In addition to the copper layer groups, you may select virtual layers. The is_empty argument is a hint - if set, the layer is empty, if zero it may be non-empty. */ - int (*set_layer_group)(pcb_hidlib_t *hidlib, 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); + int (*set_layer_group)(pcb_hid_t *hid, pcb_hidlib_t *hidlib, 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); /* Tell the GUI the layer last selected has been finished with. */ - void (*end_layer)(void); + void (*end_layer)(pcb_hid_t *hid); /*** Drawing Functions. ***/ /* Make an empty graphics context. */ - pcb_hid_gc_t (*make_gc)(void); - void (*destroy_gc)(pcb_hid_gc_t gc); + pcb_hid_gc_t (*make_gc)(pcb_hid_t *hid); + void (*destroy_gc)(pcb_hid_t *hid, pcb_hid_gc_t gc); /* Composite layer drawing: manipulate the sketch canvas and set positive or negative drawing mode. The canvas covers the screen box. */ Index: trunk/src/hid_inlines.h =================================================================== --- trunk/src/hid_inlines.h (revision 26775) +++ trunk/src/hid_inlines.h (revision 26776) @@ -33,7 +33,7 @@ { pcb_hid_gc_t res; pcb_core_gc_t *hc; - res = pcb_gui->make_gc(); + res = pcb_gui->make_gc(pcb_gui); hc = (pcb_core_gc_t *)res; /* assumes first field is pcb_core_gc_t */ hc->width = PCB_MAX_COORD; hc->cap = pcb_cap_invalid; @@ -44,7 +44,7 @@ PCB_INLINE void pcb_hid_destroy_gc(pcb_hid_gc_t gc) { - pcb_gui->destroy_gc(gc); + pcb_gui->destroy_gc(pcb_gui, gc); } PCB_INLINE void pcb_hid_set_line_cap(pcb_hid_gc_t gc, pcb_cap_style_t style) Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 26775) +++ trunk/src/hid_nogui.c (revision 26776) @@ -81,22 +81,22 @@ CRASH("invalidate_all"); } -static int nogui_set_layer_group(pcb_hidlib_t *hidlib, 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) +static int nogui_set_layer_group(pcb_hid_t *hid, pcb_hidlib_t *hidlib, 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) { CRASH("set_layer_group"); return 0; } -static void nogui_end_layer(void) +static void nogui_end_layer(pcb_hid_t *hid) { } -static pcb_hid_gc_t nogui_make_gc(void) +static pcb_hid_gc_t nogui_make_gc(pcb_hid_t *hid) { return 0; } -static void nogui_destroy_gc(pcb_hid_gc_t gc) +static void nogui_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { } Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 26775) +++ trunk/src/layer.c (revision 26776) @@ -1135,7 +1135,7 @@ pcb_layergrp_id_t grp; pcb_layer_id_t lid = v->new_id; grp = pcb_layer_get_group(pcb, lid); - return pcb_gui->set_layer_group(&pcb->hidlib, grp, v->purpose, v->purpi, lid, v->type, is_empty, xform); + return pcb_gui->set_layer_group(pcb_gui, &pcb->hidlib, grp, v->purpose, v->purpi, lid, v->type, is_empty, xform); } /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ @@ -1152,7 +1152,7 @@ *xform = NULL; if (pcb_gui->set_layer_group != NULL) - return pcb_gui->set_layer_group(&PCB->hidlib, -1, NULL, -1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty, xform); + return pcb_gui->set_layer_group(pcb_gui, &PCB->hidlib, -1, NULL, -1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty, xform); /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ return 1; Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 26775) +++ trunk/src/layer_grp.c (revision 26776) @@ -687,7 +687,7 @@ *xform = NULL; if (pcb_gui->set_layer_group != NULL) - return pcb_gui->set_layer_group(&PCB->hidlib, gid, grp->purpose, grp->purpi, grp->lid[0], grp->ltype, is_empty, xform); + return pcb_gui->set_layer_group(pcb_gui, &PCB->hidlib, gid, grp->purpose, grp->purpi, grp->lid[0], grp->ltype, is_empty, xform); /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ return 1; Index: trunk/src_plugins/export_dxf/dxf.c =================================================================== --- trunk/src_plugins/export_dxf/dxf.c (revision 26775) +++ trunk/src_plugins/export_dxf/dxf.c (revision 26776) @@ -426,7 +426,7 @@ } -static pcb_hid_gc_t dxf_make_gc(void) +static pcb_hid_gc_t dxf_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(sizeof(hid_gc_s), 1); rv->me_pointer = &dxf_hid; @@ -433,7 +433,7 @@ return rv; } -static void dxf_destroy_gc(pcb_hid_gc_t gc) +static void dxf_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_excellon/excellon.c =================================================================== --- trunk/src_plugins/export_excellon/excellon.c (revision 26775) +++ trunk/src_plugins/export_excellon/excellon.c (revision 26776) @@ -309,13 +309,13 @@ return 1; } -static pcb_hid_gc_t excellon_make_gc(void) +static pcb_hid_gc_t excellon_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = calloc(1, sizeof(*rv)); return rv; } -static void excellon_destroy_gc(pcb_hid_gc_t gc) +static void excellon_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_gcode/gcode.c =================================================================== --- trunk/src_plugins/export_gcode/gcode.c (revision 26775) +++ trunk/src_plugins/export_gcode/gcode.c (revision 26776) @@ -584,7 +584,7 @@ return 0; } -static pcb_hid_gc_t gcode_make_gc(void) +static pcb_hid_gc_t gcode_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) malloc(sizeof(struct hid_gc_s)); rv->me_pointer = &gcode_hid; @@ -596,7 +596,7 @@ return rv; } -static void gcode_destroy_gc(pcb_hid_gc_t gc) +static void gcode_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_gerber/gerber.c =================================================================== --- trunk/src_plugins/export_gerber/gerber.c (revision 26775) +++ trunk/src_plugins/export_gerber/gerber.c (revision 26776) @@ -56,8 +56,8 @@ static pcb_hid_attribute_t *gerber_get_export_options(pcb_hid_t *hid, int *n); static void gerber_do_export(pcb_hid_t *hid, pcb_hidlib_t *hidlib, pcb_hid_attr_val_t *options); static int gerber_parse_arguments(pcb_hid_t *hid, int *argc, char ***argv); -static pcb_hid_gc_t gerber_make_gc(void); -static void gerber_destroy_gc(pcb_hid_gc_t gc); +static pcb_hid_gc_t gerber_make_gc(pcb_hid_t *hid); +static void gerber_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc); static void gerber_set_color(pcb_hid_gc_t gc, const pcb_color_t *name); static void gerber_set_line_cap(pcb_hid_gc_t gc, pcb_cap_style_t style); static void gerber_set_line_width(pcb_hid_gc_t gc, pcb_coord_t width); @@ -897,7 +897,7 @@ return 1; } -static pcb_hid_gc_t gerber_make_gc(void) +static pcb_hid_gc_t gerber_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(1, sizeof(*rv)); rv->cap = pcb_cap_round; @@ -904,7 +904,7 @@ return rv; } -static void gerber_destroy_gc(pcb_hid_gc_t gc) +static void gerber_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_openems/export_openems.c =================================================================== --- trunk/src_plugins/export_openems/export_openems.c (revision 26775) +++ trunk/src_plugins/export_openems/export_openems.c (revision 26776) @@ -696,7 +696,7 @@ return 0; } -static pcb_hid_gc_t openems_make_gc(void) +static pcb_hid_gc_t openems_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(sizeof(hid_gc_s), 1); rv->me_pointer = &openems_hid; @@ -703,7 +703,7 @@ return rv; } -static void openems_destroy_gc(pcb_hid_gc_t gc) +static void openems_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 26775) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 26776) @@ -414,7 +414,7 @@ } -static pcb_hid_gc_t openscad_make_gc(void) +static pcb_hid_gc_t openscad_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(sizeof(hid_gc_s), 1); rv->me_pointer = &openscad_hid; @@ -421,7 +421,7 @@ return rv; } -static void openscad_destroy_gc(pcb_hid_gc_t gc) +static void openscad_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_png/png.c =================================================================== --- trunk/src_plugins/export_png/png.c (revision 26775) +++ trunk/src_plugins/export_png/png.c (revision 26776) @@ -1369,7 +1369,7 @@ } -static pcb_hid_gc_t png_make_gc(void) +static pcb_hid_gc_t png_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(sizeof(hid_gc_s), 1); rv->me_pointer = &png_hid; @@ -1382,7 +1382,7 @@ return rv; } -static void png_destroy_gc(pcb_hid_gc_t gc) +static void png_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_ps/eps.c =================================================================== --- trunk/src_plugins/export_ps/eps.c (revision 26775) +++ trunk/src_plugins/export_ps/eps.c (revision 26776) @@ -34,8 +34,8 @@ static void eps_do_export(pcb_hid_t *hid, pcb_hidlib_t *hidlib, pcb_hid_attr_val_t *options); static int eps_parse_arguments(pcb_hid_t *hid, int *argc, char ***argv); static int eps_set_layer_group(pcb_hid_t *hid, pcb_hidlib_t *hidlib, 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); -static pcb_hid_gc_t eps_make_gc(void); -static void eps_destroy_gc(pcb_hid_gc_t gc); +static pcb_hid_gc_t eps_make_gc(pcb_hid_t *hid); +static void eps_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc); static void eps_set_color(pcb_hid_gc_t gc, const pcb_color_t *name); static void eps_set_line_cap(pcb_hid_gc_t gc, pcb_cap_style_t style); static void eps_set_line_width(pcb_hid_gc_t gc, pcb_coord_t width); @@ -452,7 +452,7 @@ return 1; } -static pcb_hid_gc_t eps_make_gc(void) +static pcb_hid_gc_t eps_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) malloc(sizeof(hid_gc_s)); rv->cap = pcb_cap_round; @@ -461,7 +461,7 @@ return rv; } -static void eps_destroy_gc(pcb_hid_gc_t gc) +static void eps_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_ps/ps.c =================================================================== --- trunk/src_plugins/export_ps/ps.c (revision 26775) +++ trunk/src_plugins/export_ps/ps.c (revision 26776) @@ -941,7 +941,7 @@ return 1; } -static pcb_hid_gc_t ps_make_gc(void) +static pcb_hid_gc_t ps_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(1, sizeof(hid_gc_s)); rv->me_pointer = &ps_hid; @@ -949,7 +949,7 @@ return rv; } -static void ps_destroy_gc(pcb_hid_gc_t gc) +static void ps_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 26775) +++ trunk/src_plugins/export_svg/svg.c (revision 26776) @@ -464,7 +464,7 @@ } -static pcb_hid_gc_t svg_make_gc(void) +static pcb_hid_gc_t svg_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (pcb_hid_gc_t) calloc(sizeof(hid_gc_s), 1); rv->me_pointer = &svg_hid; @@ -474,7 +474,7 @@ return rv; } -static void svg_destroy_gc(pcb_hid_gc_t gc) +static void svg_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { free(gc); } Index: trunk/src_plugins/hid_batch/batch.c =================================================================== --- trunk/src_plugins/hid_batch/batch.c (revision 26775) +++ trunk/src_plugins/hid_batch/batch.c (revision 26776) @@ -174,13 +174,13 @@ return 0; } -static pcb_hid_gc_t batch_make_gc(void) +static pcb_hid_gc_t batch_make_gc(pcb_hid_t *hid) { static pcb_core_gc_t hc; return (pcb_hid_gc_t)&hc; } -static void batch_destroy_gc(pcb_hid_gc_t gc) +static void batch_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { } Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 26775) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 26776) @@ -101,7 +101,7 @@ return 1; } -static void ghid_gdk_destroy_gc(pcb_hid_gc_t gc) +static void ghid_gdk_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { if (gc->pixel_gc) g_object_unref(gc->pixel_gc); @@ -110,7 +110,7 @@ g_free(gc); } -static pcb_hid_gc_t ghid_gdk_make_gc(void) +static pcb_hid_gc_t ghid_gdk_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv; Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 26775) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 26776) @@ -161,12 +161,12 @@ drawgl_reset(); } -void ghid_gl_destroy_gc(pcb_hid_gc_t gc) +void ghid_gl_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { g_free(gc); } -pcb_hid_gc_t ghid_gl_make_gc(void) +pcb_hid_gc_t ghid_gl_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv; Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 26775) +++ trunk/src_plugins/hid_lesstif/main.c (revision 26776) @@ -2228,7 +2228,7 @@ return 1; } -static pcb_hid_gc_t lesstif_make_gc(void) +static pcb_hid_gc_t lesstif_make_gc(pcb_hid_t *hid) { pcb_hid_gc_t rv = (hid_gc_s *) malloc(sizeof(hid_gc_s)); memset(rv, 0, sizeof(hid_gc_s)); @@ -2237,7 +2237,7 @@ return rv; } -static void lesstif_destroy_gc(pcb_hid_gc_t gc) +static void lesstif_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { if (gc->colorname != NULL) free(gc->colorname); Index: trunk/src_plugins/hid_remote/remote.c =================================================================== --- trunk/src_plugins/hid_remote/remote.c (revision 26775) +++ trunk/src_plugins/hid_remote/remote.c (revision 26776) @@ -159,7 +159,7 @@ static hid_gc_s remote_gc[32]; static remote_gc_cache_t gc_cache[32]; -static pcb_hid_gc_t remote_make_gc(void) +static pcb_hid_gc_t remote_make_gc(pcb_hid_t *hid) { int gci = proto_send_make_gc(); int max = sizeof(remote_gc) / sizeof(remote_gc[0]); @@ -184,7 +184,7 @@ return idx; } -static void remote_destroy_gc(pcb_hid_gc_t gc) +static void remote_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { int idx = gc2idx(gc); if (idx >= 0) Index: trunk/src_plugins/loghid/hid-logger.c =================================================================== --- trunk/src_plugins/loghid/hid-logger.c (revision 26775) +++ trunk/src_plugins/loghid/hid-logger.c (revision 26776) @@ -72,16 +72,16 @@ delegatee_->end_layer(hid); } -static pcb_hid_gc_t log_make_gc() +static pcb_hid_gc_t log_make_gc(pcb_hid_t *hid) { pcb_fprintf(out_, "make_gc()\n"); - return delegatee_->make_gc(); + return delegatee_->make_gc(hid); } -static void log_destroy_gc(pcb_hid_gc_t gc) +static void log_destroy_gc(pcb_hid_t *hid, pcb_hid_gc_t gc) { pcb_fprintf(out_, "destroy_gc()\n"); - delegatee_->destroy_gc(gc); + delegatee_->destroy_gc(hid, gc); } static void log_set_drawing_mode(pcb_composite_op_t op, pcb_bool direct, const pcb_box_t *screen)