Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 8131) +++ trunk/src/action_helper.c (revision 8132) @@ -301,8 +301,8 @@ if (Note.Moving && !pcb_gui->shift_is_pressed()) { Note.Buffer = conf_core.editor.buffer_number; pcb_buffer_set_number(PCB_MAX_BUFFER - 1); - pcb_buffer_clear(PCB_PASTEBUFFER); - pcb_buffer_add_selected(PCB_PASTEBUFFER, Note.X, Note.Y, pcb_true); + pcb_buffer_clear(PCB, PCB_PASTEBUFFER); + pcb_buffer_add_selected(PCB, PCB_PASTEBUFFER, Note.X, Note.Y, pcb_true); pcb_undo_save_serial(); pcb_remove_selected(); pcb_crosshair_save_mode(); @@ -392,7 +392,7 @@ else if (Note.Moving) { pcb_undo_restore_serial(); pcb_notify_mode(); - pcb_buffer_clear(PCB_PASTEBUFFER); + pcb_buffer_clear(PCB, PCB_PASTEBUFFER); pcb_buffer_set_number(Note.Buffer); Note.Moving = pcb_false; Note.Hit = 0; Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 8131) +++ trunk/src/buffer.c (revision 8132) @@ -100,7 +100,7 @@ /* --------------------------------------------------------------------------- * clears the contents of the paste buffer */ -void pcb_buffer_clear(pcb_buffer_t *Buffer) +void pcb_buffer_clear(pcb_board_t *pcb, pcb_buffer_t *Buffer) { if (Buffer && Buffer->Data) { pcb_data_free(Buffer->Data); @@ -112,11 +112,11 @@ * copies all selected and visible objects to the paste buffer * returns true if any objects have been removed */ -void pcb_buffer_add_selected(pcb_buffer_t *Buffer, pcb_coord_t X, pcb_coord_t Y, pcb_bool LeaveSelected) +void pcb_buffer_add_selected(pcb_board_t *pcb, pcb_buffer_t *Buffer, pcb_coord_t X, pcb_coord_t Y, pcb_bool LeaveSelected) { pcb_opctx_t ctx; - ctx.buffer.pcb = PCB; + ctx.buffer.pcb = pcb; /* switch crosshair off because adding objects to the pastebuffer * may change the 'valid' area for the cursor @@ -127,9 +127,9 @@ ctx.buffer.extraflg = 0; pcb_notify_crosshair_change(pcb_false); - ctx.buffer.src = PCB->Data; + ctx.buffer.src = pcb->Data; ctx.buffer.dst = Buffer->Data; - pcb_selected_operation(PCB, &AddBufferFunctions, &ctx, pcb_false, PCB_TYPEMASK_ALL); + pcb_selected_operation(pcb, &AddBufferFunctions, &ctx, pcb_false, PCB_TYPEMASK_ALL); /* set origin to passed or current position */ if (X || Y) { @@ -201,7 +201,7 @@ * parse the file with enabled 'PCB mode' (see parser) * if successful, update some other stuff */ -pcb_bool pcb_buffer_load_layout(pcb_buffer_t *Buffer, const char *Filename, const char *fmt) +pcb_bool pcb_buffer_load_layout(pcb_board_t *pcb, pcb_buffer_t *Buffer, const char *Filename, const char *fmt) { pcb_board_t *newPCB = pcb_board_new(1); @@ -208,7 +208,7 @@ /* new data isn't added to the undo list */ if (!pcb_parse_pcb(newPCB, Filename, fmt, CFR_invalid, 0)) { /* clear data area and replace pointer */ - pcb_buffer_clear(Buffer); + pcb_buffer_clear(pcb, Buffer); free(Buffer->Data); Buffer->Data = newPCB->Data; newPCB->Data = NULL; @@ -215,7 +215,7 @@ Buffer->X = newPCB->CursorX; Buffer->Y = newPCB->CursorY; pcb_board_remove(newPCB); - Buffer->Data->pcb = PCB; + Buffer->Data->pcb = pcb; pcb_event(PCB_EVENT_LAYERS_CHANGED, NULL); /* undo the events generated on load */ return (pcb_true); } @@ -222,7 +222,7 @@ /* release unused memory */ pcb_board_remove(newPCB); - Buffer->Data->pcb = PCB; + Buffer->Data->pcb = pcb; pcb_event(PCB_EVENT_LAYERS_CHANGED, NULL); /* undo the events generated on load */ return (pcb_false); } @@ -387,7 +387,7 @@ int i; for (i = 0; i < PCB_MAX_BUFFER; i++) { - pcb_buffer_clear(pcb_buffers+i); + pcb_buffer_clear(PCB, pcb_buffers+i); free(pcb_buffers[i].Data); } } @@ -754,12 +754,12 @@ switch (pcb_funchash_get(function, NULL)) { /* clear contents of paste buffer */ case F_Clear: - pcb_buffer_clear(PCB_PASTEBUFFER); + pcb_buffer_clear(PCB, PCB_PASTEBUFFER); break; /* copies objects to paste buffer */ case F_AddSelected: - pcb_buffer_add_selected(PCB_PASTEBUFFER, 0, 0, pcb_false); + pcb_buffer_add_selected(PCB, PCB_PASTEBUFFER, 0, 0, pcb_false); break; /* converts buffer contents into an element */ Index: trunk/src/buffer.h =================================================================== --- trunk/src/buffer.h (revision 8131) +++ trunk/src/buffer.h (revision 8132) @@ -46,9 +46,9 @@ /* returns 0 on success */ int pcb_set_buffer_bbox(pcb_buffer_t *); -void pcb_buffer_clear(pcb_buffer_t *); -void pcb_buffer_add_selected(pcb_buffer_t *, pcb_coord_t, pcb_coord_t, pcb_bool); -pcb_bool pcb_buffer_load_layout(pcb_buffer_t *Buffer, const char *Filename, const char *fmt); +void pcb_buffer_clear(pcb_board_t *pcb, pcb_buffer_t *); +void pcb_buffer_add_selected(pcb_board_t *pcb, pcb_buffer_t *, pcb_coord_t, pcb_coord_t, pcb_bool); +pcb_bool pcb_buffer_load_layout(pcb_board_t *pcb, pcb_buffer_t *Buffer, const char *Filename, const char *fmt); void pcb_buffer_rotate(pcb_buffer_t *, pcb_uint8_t); void pcb_buffer_select_paste(int); void pcb_buffers_flip_side(void); Index: trunk/src/file_act.c =================================================================== --- trunk/src/file_act.c (revision 8131) +++ trunk/src/file_act.c (revision 8132) @@ -127,7 +127,7 @@ else if (pcb_strcasecmp(function, "LayoutToBuffer") == 0) { pcb_notify_crosshair_change(pcb_false); - if (pcb_buffer_load_layout(PCB_PASTEBUFFER, name, format)) + if (pcb_buffer_load_layout(PCB, PCB_PASTEBUFFER, name, format)) pcb_crosshair_set_mode(PCB_MODE_PASTE_BUFFER); pcb_notify_crosshair_change(pcb_true); } Index: trunk/src/obj_elem.c =================================================================== --- trunk/src/obj_elem.c (revision 8131) +++ trunk/src/obj_elem.c (revision 8132) @@ -126,7 +126,7 @@ { pcb_element_t *element; - pcb_buffer_clear(Buffer); + pcb_buffer_clear(PCB, Buffer); if (!pcb_parse_element(Buffer->Data, Name)) { if (conf_core.editor.show_solder_side) pcb_buffer_flip_side(Buffer); @@ -144,7 +144,7 @@ } /* release memory which might have been acquired */ - pcb_buffer_clear(Buffer); + pcb_buffer_clear(PCB, Buffer); return (pcb_false); } @@ -179,7 +179,7 @@ */ element = elementlist_first(&Buffer->Data->Element); elementlist_remove(element); - pcb_buffer_clear(Buffer); + pcb_buffer_clear(PCB, Buffer); PCB_ELEMENT_PCB_LINE_LOOP(element); { pcb_line_new(&Buffer->Data->SILKLAYER, @@ -387,7 +387,7 @@ if (PCB_SWAP_IDENT) PCB_FLAG_SET(PCB_FLAG_ONSOLDER, Element); pcb_element_bbox(PCB->Data, Element, pcb_font(PCB, 0, 1)); - pcb_buffer_clear(Buffer); + pcb_buffer_clear(PCB, Buffer); pcb_move_obj_to_buffer(Buffer->Data, PCB->Data, PCB_TYPE_ELEMENT, Element, Element, Element); pcb_set_buffer_bbox(Buffer); return (pcb_true); Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 8131) +++ trunk/src/object_act.c (revision 8132) @@ -798,7 +798,7 @@ if (pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_TYPE_ELEMENT, &ptr1, &ptr2, &ptr3) != PCB_TYPE_NONE) { Note.Buffer = conf_core.editor.buffer_number; pcb_buffer_set_number(PCB_MAX_BUFFER - 1); - pcb_buffer_clear(PCB_PASTEBUFFER); + pcb_buffer_clear(PCB, PCB_PASTEBUFFER); pcb_copy_obj_to_buffer(PCB_PASTEBUFFER->Data, PCB->Data, PCB_TYPE_ELEMENT, ptr1, ptr2, ptr3); pcb_element_smash_buffer(PCB_PASTEBUFFER); PCB_PASTEBUFFER->X = 0; Index: trunk/src/select_act.c =================================================================== --- trunk/src/select_act.c (revision 8131) +++ trunk/src/select_act.c (revision 8132) @@ -220,11 +220,11 @@ pcb_coord_t x, y; Note.Buffer = conf_core.editor.buffer_number; pcb_buffer_set_number(PCB_MAX_BUFFER - 1); - pcb_buffer_clear(PCB_PASTEBUFFER); + pcb_buffer_clear(PCB, PCB_PASTEBUFFER); pcb_gui->get_coords(_("Select the Element's Mark Location"), &x, &y); x = pcb_grid_fit(x, PCB->Grid, PCB->GridOffsetX); y = pcb_grid_fit(y, PCB->Grid, PCB->GridOffsetY); - pcb_buffer_add_selected(PCB_PASTEBUFFER, x, y, pcb_true); + pcb_buffer_add_selected(PCB, PCB_PASTEBUFFER, x, y, pcb_true); pcb_undo_save_serial(); pcb_remove_selected(); pcb_element_convert_from_buffer(PCB_PASTEBUFFER); Index: trunk/src_plugins/export_openscad/scadcomp.c =================================================================== --- trunk/src_plugins/export_openscad/scadcomp.c (revision 8131) +++ trunk/src_plugins/export_openscad/scadcomp.c (revision 8132) @@ -365,7 +365,7 @@ if (PCB_ON_SIDE(Element,(Settings.ShowBottomSide)?BOTTOM_SIDE:TOP_SIDE)) pcb_element_mirror(element_buffer.Data, element, 0); - pcb_buffer_clear(&element_buffer); + pcb_buffer_clear(PCB, &element_buffer); */ } Index: trunk/src_plugins/shand_cmd/command.c =================================================================== --- trunk/src_plugins/shand_cmd/command.c (revision 8131) +++ trunk/src_plugins/shand_cmd/command.c (revision 8132) @@ -188,7 +188,7 @@ format = argv[1]; case 1: /* filename is passed in commandline */ filename = argv[0]; - if (filename && pcb_buffer_load_layout(PCB_PASTEBUFFER, filename, format)) + if (filename && pcb_buffer_load_layout(PCB, PCB_PASTEBUFFER, filename, format)) pcb_crosshair_set_mode(PCB_MODE_PASTE_BUFFER); break;