David Rose 16 年 前
コミット
abae156103

+ 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);
   log.read(buffer, size);
-  P3D_object *result = new P3DStringObject(buffer, size);
+  P3D_object *result = new P3DStringObject(buffer, log.gcount());
   delete[] buffer;
   delete[] buffer;
-  
+
   return result;
   return result;
 }
 }

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

@@ -302,9 +302,16 @@ stop_thread() {
     PostThreadMessage(_thread_id, WM_USER, 0, 0);
     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);
     CloseHandle(_thread);
     _thread = NULL;
     _thread = NULL;