=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/engine2000/ox_plot_win.c,v retrieving revision 1.3 retrieving revision 1.7 diff -u -p -r1.3 -r1.7 --- OpenXM_contrib2/windows/engine2000/ox_plot_win.c 2002/07/30 03:06:20 1.3 +++ OpenXM_contrib2/windows/engine2000/ox_plot_win.c 2014/03/25 19:24:43 1.7 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/windows/engine2000/ox_plot_win.c,v 1.2 2001/10/09 01:36:29 noro Exp $ + * $OpenXM: OpenXM_contrib2/windows/engine2000/ox_plot_win.c,v 1.6 2002/10/03 03:05:44 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -62,9 +62,7 @@ static int remotes; static int depth,scrn; extern jmp_buf ox_env; -extern DWORD MainThread; - static int busy; HBRUSH ClearBrush,DrawBrush; @@ -92,21 +90,29 @@ int search_active_canvas() return -1; } +volatile DWORD MainThread; +volatile int canvas_created; +extern HANDLE hMainThreadReady,hCanvasCreated; + void create_canvas(struct canvas *can) { alloc_pixmap(can); can->real_can = can; + WaitForSingleObject(hMainThreadReady,(DWORD)-1); + ResetEvent(hCanvasCreated); PostThreadMessage(MainThread,WM_APP,can->index,0); + WaitForSingleObject(hCanvasCreated,(DWORD)-1); } -void popdown_canvas(int index); - void destroy_canvas(struct canvas *can) { if ( can == current_can ) { reset_busy(can); current_can = 0; } - popdown_canvas(can->index); + can->window = 0; + DeleteObject(can->pix); + closed_canvas[can->index] = can; + canvas[can->index] = 0; } void clear_pixmap(struct canvas *can) @@ -148,14 +154,9 @@ void copy_to_canvas(struct canvas *can) void popup_canvas(int index) { - PostThreadMessage(MainThread,WM_APP+1,index,0); + create_canvas(canvas[index]); } -void popdown_canvas(int index) -{ - PostThreadMessage(MainThread,WM_APP+2,index,0); -} - void copy_subimage(struct canvas *subcan,struct canvas *can,POINT pos) { BitBlt(can->pix,pos.x,pos.y,subcan->width,subcan->height,subcan->pix,0,0,SRCCOPY); @@ -205,4 +206,9 @@ void draw_frame0(DRAWABLE d,POINT spos,POINT epos) rect.left = spos.x; rect.top = spos.y; rect.right = epos.x; rect.bottom = epos.y; FrameRect(d,&rect,DrawBrush); +} + +/* dummy function */ +void set_drawcolor(unsigned int c) +{ }