CVS: winex/scheduler client.c, 1.53, 1.54 process.c, 1.59, 1.60

[email protected] 31 Jul 2007 20:06:16 -0000
Newsgroups gmane.comp.emulators.winex.cvs
Message-ID <[email protected]>
Subject: winex/scheduler client.c,1.53,1.54 process.c,1.59,1.60Update of /var/lib/cvsd/cvsroot/winex/scheduler
In directory agravaine:/tmp/cvs-serv3419/scheduler

Modified Files:
	client.c process.c 
Log Message:
Refactor SHM server to handle both POSIX and SYSV IPC.
Add support for SHM server on Mac OS X.


Index: client.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/scheduler/client.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- client.c	31 Jul 2007 19:58:39 -0000	1.53
+++ client.c	31 Jul 2007 20:06:14 -0000	1.54
@@ -92,7 +92,7 @@
 extern alloc_server_memory_fcn alloc_server_memory;
 extern free_server_memory_fcn  free_server_memory;
 
-typedef void* (*get_server_shared_memory_area_fcn)( const char* wineserver_exe_name, size_t shm_size, void *shm_addr, size_t shm_res_size, void *shm_res_addr );
+typedef void* (*get_server_shared_memory_area_fcn)( int shm_server_type, const char* wineserver_exe_name, size_t shm_size, void *shm_addr, size_t shm_res_size, void *shm_res_addr );
 static get_server_shared_memory_area_fcn get_server_shared_memory_area;
 
 typedef void (*shared_server_set_debug_level_fcn)( int debuglevel );
@@ -107,7 +107,11 @@
                                                 int hit, int signaled );
 shared_server_complete_poll_fcn shared_server_complete_poll;
 
+#ifdef __APPLE__
+static const char wineserver_so_name[] = "libwineserver.dylib";
+#else
 static const char wineserver_so_name[] = "libwineserver.so";
+#endif
 static const char shared_server_entry_fcn_name[] = "shared_server_call";
 static const char get_server_shared_memory_area_fcn_name[] = "get_server_shared_memory_area";
 static const char shared_server_data_name[] = "shared_memory_data_area";
@@ -290,7 +294,8 @@
 /* Perform any required setup to allow communication and data exchange with the
  * shared memory wineserver.
  */
-void setup_shared_memory_wineserver( size_t shm_size, void *shm_addr )
+void setup_shared_memory_wineserver( int shm_type, size_t shm_size,
+                                     void *shm_addr )
 {
   void* so_handle;
   char error[256];
@@ -341,8 +346,9 @@
 
 #undef GET_SHM_SERVER_SYMBOL
 
-  server_shared_memory = get_server_shared_memory_area( get_config_dir(),
-          shm_size, shm_addr, shm_res_size, shm_res_addr );
+  server_shared_memory =
+     get_server_shared_memory_area (shm_type, get_config_dir (), shm_size,
+                                    shm_addr, shm_res_size, shm_res_addr);
   if( !server_shared_memory )
   {
     ERR( "can't get shared memory\n" );

Index: process.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/scheduler/process.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- process.c	31 Jul 2007 19:56:08 -0000	1.59
+++ process.c	31 Jul 2007 20:06:14 -0000	1.60
@@ -487,6 +487,7 @@
     WINE_MODREF *wm;
     HFILE main_file = main_exe_file;
     int use_shm;
+    int shm_type;
     size_t shm_size;
     void *shm_addr;
 
@@ -544,6 +545,7 @@
         use_shm = reply->shm_server;
         shm_size = reply->shm_size;
         shm_addr = reply->shm_addr;
+        shm_type = reply->shm_type;
     }
     SERVER_END_REQ;
 
@@ -556,7 +558,7 @@
 
     if (main_exe_file) CloseHandle( main_exe_file ); /* we no longer need it */
 
-    if( use_shm ) setup_shared_memory_wineserver( shm_size, shm_addr );
+    if (use_shm) setup_shared_memory_wineserver (shm_type, shm_size, shm_addr);
 
     MODULE_DllProcessAttach( NULL, (LPVOID)1 );