Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 19117) +++ trunk/src/hid.h (revision 19118) @@ -221,7 +221,8 @@ void (*notify_mark_change)(pcb_bool changes_complete); /* During redraw or print/export cycles, this is called once per layer group - (physical layer); layer is the first layer in the group. + (physical layer); pusrpose/purpi are the extracted purpose field and its + keyword/function version; layer is the first layer in the group. TODO: The group may be -1 until the layer rewrite is finished. If it returns false (zero), the HID does not want that layer, and none of the drawing functions should be called. If it returns pcb_true (nonzero), @@ -229,7 +230,7 @@ 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_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty); + int (*set_layer_group)(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty); /* Tell the GUI the layer last selected has been finished with. */ void (*end_layer)(void); Index: trunk/src/hid_cam.c =================================================================== --- trunk/src/hid_cam.c (revision 19117) +++ trunk/src/hid_cam.c (revision 19118) @@ -315,7 +315,7 @@ } -int pcb_cam_set_layer_group_(pcb_cam_t *cam, pcb_layergrp_id_t group, unsigned int flags) +int pcb_cam_set_layer_group_(pcb_cam_t *cam, pcb_layergrp_id_t group, const char *purpose, int purpi, unsigned int flags) { const pcb_virt_layer_t *vl; Index: trunk/src/hid_cam.h =================================================================== --- trunk/src/hid_cam.h (revision 19117) +++ trunk/src/hid_cam.h (revision 19118) @@ -29,15 +29,15 @@ /* Shall be the first rule in a cam capable exporter's set_layer_group() callback: decides not to draw a layer group in cam mode if the group is not scheduled for export */ -#define pcb_cam_set_layer_group(cam, group, flags) \ +#define pcb_cam_set_layer_group(cam, group, purpose, purpi, flags) \ do { \ - if (pcb_cam_set_layer_group_(cam, group, flags)) \ + if (pcb_cam_set_layer_group_(cam, group, purpose, purpi, flags)) \ return 0; \ } while(0) /* the logics behind pcb_cam_set_layer_group(); returns non-zero if the macro should return (and skip the current group) */ -int pcb_cam_set_layer_group_(pcb_cam_t *cam, pcb_layergrp_id_t group, unsigned int flags); +int pcb_cam_set_layer_group_(pcb_cam_t *cam, pcb_layergrp_id_t group, const char *purpose, int purpi, unsigned int flags); /*** Obsolete file suffix API - new plugins should not use this ***/ /* maximum size of a derived suffix */ Index: trunk/src/hid_extents.c =================================================================== --- trunk/src/hid_extents.c (revision 19117) +++ trunk/src/hid_extents.c (revision 19118) @@ -40,7 +40,7 @@ int width; } hid_gc_s; -static int extents_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int extents_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { switch (flags & PCB_LYT_ANYTHING) { case PCB_LYT_COPPER: Index: trunk/src/hid_nogui.c =================================================================== --- trunk/src/hid_nogui.c (revision 19117) +++ trunk/src/hid_nogui.c (revision 19118) @@ -77,7 +77,7 @@ CRASH("invalidate_all"); } -static int nogui_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int nogui_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { CRASH("set_layer_group"); return 0; Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 19117) +++ trunk/src/layer.c (revision 19118) @@ -954,7 +954,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(grp, lid, v->type, is_empty); + return pcb_gui->set_layer_group(grp, v->purpose, v->purpi, lid, v->type, is_empty); } /* if the GUI doesn't have a set_layer, assume it wants to draw all layers */ @@ -968,7 +968,7 @@ return 0; if (pcb_gui->set_layer_group != NULL) - return pcb_gui->set_layer_group(-1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty); + return pcb_gui->set_layer_group(-1, NULL, -1, pcb_layer_id(first->parent.data, first), PCB_LYT_VIRTUAL | PCB_LYT_UI, is_empty); /* 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 19117) +++ trunk/src/layer_grp.c (revision 19118) @@ -583,7 +583,7 @@ return 0; if (pcb_gui->set_layer_group != NULL) - return pcb_gui->set_layer_group(grp, pcb->LayerGroups.grp[grp].lid[0], pcb_layergrp_flags(pcb, grp), is_empty); + return pcb_gui->set_layer_group(grp, pcb->LayerGroups.grp[grp].purpose, pcb->LayerGroups.grp[grp].purpi, pcb->LayerGroups.grp[grp].lid[0], pcb_layergrp_flags(pcb, grp), is_empty); /* 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 19117) +++ trunk/src_plugins/export_dxf/dxf.c (revision 19118) @@ -341,12 +341,12 @@ return pcb_hid_parse_command_line(argc, argv); } -static int dxf_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int dxf_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { if (flags & PCB_LYT_UI) return 0; - pcb_cam_set_layer_group(&dxf_cam, group, flags); + pcb_cam_set_layer_group(&dxf_cam, group, purpose, purpi, flags); if (!dxf_cam.active) { if (flags & PCB_LYT_INVIS) Index: trunk/src_plugins/export_gcode/gcode.c =================================================================== --- trunk/src_plugins/export_gcode/gcode.c (revision 19117) +++ trunk/src_plugins/export_gcode/gcode.c (revision 19118) @@ -546,7 +546,7 @@ /* *** PNG export (slightly modified code from PNG export HID) ************* */ -static int gcode_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int gcode_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { if (flags & PCB_LYT_UI) return 0; Index: trunk/src_plugins/export_gerber/gerber.c =================================================================== --- trunk/src_plugins/export_gerber/gerber.c (revision 19117) +++ trunk/src_plugins/export_gerber/gerber.c (revision 19118) @@ -689,7 +689,7 @@ return b->y - b->y; } -static int gerber_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int gerber_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { int want_outline; char *cp; @@ -699,7 +699,7 @@ if (flags & PCB_LYT_ASSY) return 0; - pcb_cam_set_layer_group(&gerber_cam, group, flags); + pcb_cam_set_layer_group(&gerber_cam, group, purpose, purpi, flags); if (flags & PCB_LYT_UI) return 0; Index: trunk/src_plugins/export_nelma/nelma.c =================================================================== --- trunk/src_plugins/export_nelma/nelma.c (revision 19117) +++ trunk/src_plugins/export_nelma/nelma.c (revision 19118) @@ -655,7 +655,7 @@ /* *** PNG export (slightly modified code from PNG export HID) ************* */ -static int nelma_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int nelma_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { if (flags & PCB_LYT_INVIS) return 0; Index: trunk/src_plugins/export_openems/export_openems.c =================================================================== --- trunk/src_plugins/export_openems/export_openems.c (revision 19117) +++ trunk/src_plugins/export_openems/export_openems.c (revision 19118) @@ -657,7 +657,7 @@ return pcb_hid_parse_command_line(argc, argv); } -static int openems_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int openems_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { if (flags & PCB_LYT_COPPER) { /* export copper layers only */ ems_ctx->clayer = ems_ctx->lg_pcb2ems[group]; Index: trunk/src_plugins/export_openscad/export_openscad.c =================================================================== --- trunk/src_plugins/export_openscad/export_openscad.c (revision 19117) +++ trunk/src_plugins/export_openscad/export_openscad.c (revision 19118) @@ -356,7 +356,7 @@ -static int openscad_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int openscad_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { if (flags & PCB_LYT_UI) return 0; Index: trunk/src_plugins/export_png/png.c =================================================================== --- trunk/src_plugins/export_png/png.c (revision 19117) +++ trunk/src_plugins/export_png/png.c (revision 19118) @@ -1192,7 +1192,7 @@ static int is_drill; -static int png_set_layer_group_photo(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int png_set_layer_group_photo(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { if (((flags & PCB_LYT_ANYTHING) == PCB_LYT_SILK) && (flags & PCB_LYT_TOP)) { if (photo_flip) @@ -1263,7 +1263,7 @@ return 1; } -static int png_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int png_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { doing_outline = 0; @@ -1270,7 +1270,7 @@ if (flags & PCB_LYT_UI) return 0; - pcb_cam_set_layer_group(&png_cam, group, flags); + pcb_cam_set_layer_group(&png_cam, group, purpose, purpi, flags); if (!png_cam.active) { @@ -1285,7 +1285,7 @@ is_mask = (flags & PCB_LYT_MASK); if (photo_mode) - return png_set_layer_group_photo(group, layer, flags, is_empty); + return png_set_layer_group_photo(group, purpose, purpi, layer, flags, is_empty); if (as_shown) { if ((flags & PCB_LYT_ANYTHING) == PCB_LYT_SILK) { Index: trunk/src_plugins/export_ps/eps.c =================================================================== --- trunk/src_plugins/export_ps/eps.c (revision 19117) +++ trunk/src_plugins/export_ps/eps.c (revision 19118) @@ -32,7 +32,7 @@ static pcb_hid_attribute_t *eps_get_export_options(int *n); static void eps_do_export(pcb_hid_attr_val_t * options); static int eps_parse_arguments(int *argc, char ***argv); -static int eps_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty); +static int eps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty); static pcb_hid_gc_t eps_make_gc(void); static void eps_destroy_gc(pcb_hid_gc_t gc); static void eps_set_color(pcb_hid_gc_t gc, const char *name); @@ -360,7 +360,7 @@ static int is_paste; static int is_drill; -static int eps_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int eps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { char tmp_ln[PCB_PATH_MAX]; const char *name; @@ -368,7 +368,7 @@ if (flags & PCB_LYT_UI) return 0; - pcb_cam_set_layer_group(&eps_cam, group, flags); + pcb_cam_set_layer_group(&eps_cam, group, purpose, purpi, flags); if (!eps_cam.active) { if (flags & PCB_LYT_NOEXPORT) Index: trunk/src_plugins/export_ps/ps.c =================================================================== --- trunk/src_plugins/export_ps/ps.c (revision 19117) +++ trunk/src_plugins/export_ps/ps.c (revision 19118) @@ -33,7 +33,7 @@ const char *ps_cookie = "ps HID"; -static int ps_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty); +static int ps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty); static void use_gc(pcb_hid_gc_t gc); typedef struct hid_gc_s { @@ -675,7 +675,7 @@ global.linewidth = -1; /* reset static vars */ - ps_set_layer_group(-1, -1, 0, -1); + ps_set_layer_group(-1, NULL, -1, -1, 0, -1); use_gc(NULL); global.exps.view.X1 = 0; @@ -698,7 +698,7 @@ global.pagecount = 1; /* Reset 'pagecount' if single file */ global.doing_toc = 0; - ps_set_layer_group(-1, -1, 0, -1); /* reset static vars */ + ps_set_layer_group(-1, NULL, -1, -1, 0, -1); /* reset static vars */ pcb_hid_expose_all(&ps_hid, &global.exps); if (the_file) @@ -786,7 +786,7 @@ fprintf(fh, "stroke grestore\n"); } -static int ps_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int ps_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { char tmp_fn[PCB_PATH_MAX]; char tmp_ln[PCB_PATH_MAX]; @@ -804,7 +804,7 @@ if (flags & PCB_LYT_UI) return 0; - pcb_cam_set_layer_group(&ps_cam, group, flags); + pcb_cam_set_layer_group(&ps_cam, group, purpose, purpi, flags); if (!ps_cam.active) { if (flags & PCB_LYT_NOEXPORT) Index: trunk/src_plugins/export_svg/svg.c =================================================================== --- trunk/src_plugins/export_svg/svg.c (revision 19117) +++ trunk/src_plugins/export_svg/svg.c (revision 19118) @@ -351,7 +351,7 @@ return pcb_hid_parse_command_line(argc, argv); } -static int svg_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int svg_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { int opa, is_our_mask = 0, is_our_silk = 0; @@ -358,7 +358,7 @@ if (flags & PCB_LYT_UI) return 0; - pcb_cam_set_layer_group(&svg_cam, group, flags); + pcb_cam_set_layer_group(&svg_cam, group, purpose, purpi, flags); if (!svg_cam.active) { if (flags & PCB_LYT_INVIS) Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.c =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.c (revision 19117) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.c (revision 19118) @@ -79,7 +79,7 @@ /* Do nothing */ } -int gpmi_hid_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +int gpmi_hid_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { gpmi_hid_t *h = hid_gpmi_data_get(pcb_exporter); gpmi_event(h->module, HIDE_set_layer_group, h, group, layer, flags, is_empty); Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.h =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.h (revision 19117) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/hid/hid_callbacks.h (revision 19118) @@ -4,7 +4,7 @@ void gpmi_hid_do_export(pcb_hid_attr_val_t * options); int gpmi_hid_parse_arguments(int *pcbargc, char ***pcbargv); void gpmi_hid_set_crosshair(pcb_coord_t x, pcb_coord_t y, int cursor_action); -int gpmi_hid_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty); +int gpmi_hid_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty); void gpmi_hid_set_color(pcb_hid_gc_t gc, const char *name); void gpmi_hid_set_line_cap(pcb_hid_gc_t gc, pcb_cap_style_t style); void gpmi_hid_set_line_width(pcb_hid_gc_t gc, pcb_coord_t width); Index: trunk/src_plugins/hid_batch/batch.c =================================================================== --- trunk/src_plugins/hid_batch/batch.c (revision 19117) +++ trunk/src_plugins/hid_batch/batch.c (revision 19118) @@ -169,7 +169,7 @@ { } -static int batch_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int batch_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { return 0; } Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 19117) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 19118) @@ -99,7 +99,7 @@ } -static int ghid_gdk_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int ghid_gdk_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { int idx = group; if (idx >= 0 && idx < pcb_max_group(PCB)) { Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 19117) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 19118) @@ -137,7 +137,7 @@ } #endif -int ghid_gl_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +int ghid_gl_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { render_priv_t *priv = gport->render_priv; int idx = group; Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 19117) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 19118) @@ -208,7 +208,7 @@ priv->cr = priv->cr_target; } -static int ghid_cairo_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int ghid_cairo_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { int idx = group; if (idx >= 0 && idx < pcb_max_group(PCB)) { Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 19117) +++ trunk/src_plugins/hid_lesstif/main.c (revision 19118) @@ -2888,7 +2888,7 @@ invalidate_depth++; } -static int lesstif_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +static int lesstif_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int purpi, pcb_layer_id_t layer, unsigned int flags, int is_empty) { int idx = group; if (idx >= 0 && idx < pcb_max_group(PCB)) { Index: trunk/src_plugins/hid_remote/proto.c =================================================================== --- trunk/src_plugins/hid_remote/proto.c (revision 19117) +++ trunk/src_plugins/hid_remote/proto.c (revision 19118) @@ -103,12 +103,13 @@ send_end(&pctx); } -int proto_send_set_layer_group(pcb_layergrp_id_t group, int is_empty) +int proto_send_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int is_empty) { send_begin(&pctx, "setlg"); send_open(&pctx, 0, 1); sendf(&pctx, "%ld", group); sendf(&pctx, "%d", is_empty); + sendf(&pctx, "%s", purpose); send_close(&pctx); send_end(&pctx); return 0; Index: trunk/src_plugins/hid_remote/proto.h =================================================================== --- trunk/src_plugins/hid_remote/proto.h (revision 19117) +++ trunk/src_plugins/hid_remote/proto.h (revision 19118) @@ -34,7 +34,7 @@ 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); -int proto_send_set_layer_group(pcb_layergrp_id_t group, int is_empty); +int proto_send_set_layer_group(pcb_layergrp_id_t group, const char *purpose, int is_empty); int proto_send_make_gc(void); int proto_send_del_gc(int gc); Index: trunk/src_plugins/hid_remote/remote.c =================================================================== --- trunk/src_plugins/hid_remote/remote.c (revision 19117) +++ trunk/src_plugins/hid_remote/remote.c (revision 19118) @@ -132,7 +132,7 @@ proto_send_invalidate_all(); } -static int remote_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +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) { if (flags & PCB_LYT_UI) /* do not draw UI layers yet, we didn't create them */ return 0; @@ -141,10 +141,10 @@ if (flags & PCB_LYT_CSECT) /* do not draw cross-sect, we didn't create them */ return 0; if (group >= 0) - proto_send_set_layer_group(group, is_empty); + proto_send_set_layer_group(group, purpose, is_empty); else { #warning layer TODO: remove this temporary hack for virtual layers - proto_send_set_layer_group(layer, is_empty); + proto_send_set_layer_group(layer, purpose, is_empty); } return 1; /* do draw */ Index: trunk/src_plugins/loghid/hid-logger.c =================================================================== --- trunk/src_plugins/loghid/hid-logger.c (revision 19117) +++ trunk/src_plugins/loghid/hid-logger.c (revision 19118) @@ -60,10 +60,10 @@ delegatee_->notify_mark_change(changes_complete); } -static int log_set_layer_group(pcb_layergrp_id_t group, pcb_layer_id_t layer, unsigned int flags, int is_empty) +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_fprintf(out_, "set_layer(group=%ld, layer=%ld, flags=%lx, empty=%s)\n", group, layer, flags, is_empty ? "true" : "false"); - return delegatee_->set_layer_group(group, layer, flags, is_empty); + return delegatee_->set_layer_group(group, purpose, purpi, layer, flags, is_empty); } static void log_end_layer()