Browse Source

minor fixes

David Rose 16 years ago
parent
commit
abae156103
2 changed files with 12 additions and 5 deletions
  1. 2 2
      direct/src/plugin/p3dMainObject.cxx
  2. 10 3
      direct/src/plugin/p3dWinSplashWindow.cxx

+ 2 - 2
direct/src/plugin/p3dMainObject.cxx

@@ -408,8 +408,8 @@ read_log(const string &log_pathname, P3D_object *params[], int num_params) {
   }
 
   log.read(buffer, size);
-  P3D_object *result = new P3DStringObject(buffer, size);
+  P3D_object *result = new P3DStringObject(buffer, log.gcount());
   delete[] buffer;
-  
+
   return result;
 }

+ 10 - 3
direct/src/plugin/p3dWinSplashWindow.cxx

@@ -302,9 +302,16 @@ stop_thread() {
     PostThreadMessage(_thread_id, WM_USER, 0, 0);
   }
 
-  if (_thread != NULL){ 
-    WaitForSingleObject(_thread, INFINITE);
-
+  if (_thread != NULL){
+    // If the thread doesn't close right away, call PeekMessage() to
+    // check for Windows messages that the thread might be waiting
+    // for.
+    while (WaitForSingleObject(_thread, 200) == WAIT_TIMEOUT) {
+      MSG msg;
+      PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE | PM_NOYIELD);
+      nout << "Waiting for thread\n";
+    }
+ 
     CloseHandle(_thread);
     _thread = NULL;