Eric Pouech : wineconsole: Move the curses critical section inside the private data.
Alexandre Julliard
julliard at winehq.org
Mon Nov 29 13:38:37 CST 2010
Module: wine
Branch: master
Commit: ac256c7352bd597c6264faf8ac2ac478c4867635
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ac256c7352bd597c6264faf8ac2ac478c4867635
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Sun Nov 28 22:10:49 2010 +0100
wineconsole: Move the curses critical section inside the private data.
---
programs/wineconsole/curses.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/programs/wineconsole/curses.c b/programs/wineconsole/curses.c
index 172ac47..f1cab51 100644
--- a/programs/wineconsole/curses.c
+++ b/programs/wineconsole/curses.c
@@ -73,13 +73,12 @@ struct inner_data_curse
unsigned long initial_mouse_mask;
int sync_pipe[2];
HANDLE input_thread;
+ CRITICAL_SECTION lock;
WINDOW* pad;
chtype* line;
int allow_scroll;
};
-static CRITICAL_SECTION WCCURSES_CritSect;
-
static void *nc_handle = NULL;
#ifdef initscr /* work around Solaris breakage */
@@ -953,7 +952,7 @@ static DWORD CALLBACK input_thread( void *arg )
if (!(pfd[0].revents & POLLIN)) continue;
/* we're called from input thread (not main thread), so force unique access */
- EnterCriticalSection(&WCCURSES_CritSect);
+ EnterCriticalSection(&PRIVATE(data)->lock);
if ((inchar = wgetch(stdscr)) != ERR)
{
WINE_TRACE("Got o%o (0x%x)\n", inchar,inchar);
@@ -965,7 +964,7 @@ static DWORD CALLBACK input_thread( void *arg )
if (numEvent) WriteConsoleInputW(data->hConIn, ir, numEvent, &n);
}
- LeaveCriticalSection(&WCCURSES_CritSect);
+ LeaveCriticalSection(&PRIVATE(data)->lock);
}
close( PRIVATE(data)->sync_pipe[0] );
return 0;
@@ -986,6 +985,7 @@ static void WCCURSES_DeleteBackend(struct inner_data* data)
WaitForSingleObject( PRIVATE(data)->input_thread, INFINITE );
CloseHandle( PRIVATE(data)->input_thread );
}
+ DeleteCriticalSection(&PRIVATE(data)->lock);
delwin(PRIVATE(data)->pad);
#ifdef HAVE_MOUSEMASK
@@ -1018,9 +1018,9 @@ static int WCCURSES_MainLoop(struct inner_data* data)
while (cont && WaitForSingleObject(data->hSynchro, INFINITE) == WAIT_OBJECT_0)
{
- EnterCriticalSection(&WCCURSES_CritSect);
+ EnterCriticalSection(&PRIVATE(data)->lock);
cont = WINECON_GrabChanges(data);
- LeaveCriticalSection(&WCCURSES_CritSect);
+ LeaveCriticalSection(&PRIVATE(data)->lock);
}
close( PRIVATE(data)->sync_pipe[1] );
@@ -1103,6 +1103,7 @@ enum init_return WCCURSES_InitBackend(struct inner_data* data)
PRIVATE(data)->initial_mouse_mask = mm;
}
#endif
+ InitializeCriticalSection(&PRIVATE(data)->lock);
return init_success;
}
More information about the wine-cvs
mailing list