]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Mark thread as started immediately, otherwise thread kill logic won't work correctly...
authorToni Wilen <twilen@winuae.net>
Sun, 16 Nov 2025 11:39:34 +0000 (13:39 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 16 Nov 2025 11:39:34 +0000 (13:39 +0200)
pcem/vid_s3.cpp
pcem/vid_s3_virge.cpp

index b103bdce6fffe0869da2b0989f64a4bea38b4a24..c59cb4df0100ae19187e5f255e8d38b124cc9d64 100644 (file)
@@ -890,7 +890,6 @@ static void fifo_thread(void *param)
 {
         s3_t *s3 = (s3_t *)param;
         
-        s3->fifo_thread_state = 1;
         while (s3->fifo_thread_state > 0)
         {
                 thread_set_event(s3->fifo_not_full_event);
@@ -2888,6 +2887,7 @@ static void *s3_init(char *bios_fn, int chip)
 
         s3->wake_fifo_thread = thread_create_event();
         s3->fifo_not_full_event = thread_create_event();
+        s3->fifo_thread_state = 1;
         s3->fifo_thread = thread_create(fifo_thread, s3);
         
         s3->int_line = 0;
index 4df9d068dfa0a3d4f2a24dd5f3098f197ec62c3a..0dc96cd380e3b255109770526f3138a8511f8f3f 100644 (file)
@@ -1069,7 +1069,6 @@ static void fifo_thread(void *param)
 {
         virge_t *virge = (virge_t *)param;
         
-        virge->fifo_thread_state = 1;
         while (virge->fifo_thread_state > 0)
         {
                 thread_set_event(virge->fifo_not_full_event);
@@ -3475,7 +3474,6 @@ static void render_thread(void *param)
 {
         virge_t *virge = (virge_t *)param;
         
-        virge->render_thread_state = 1;
         while (virge->render_thread_state > 0)
         {
                 thread_wait_event(virge->wake_render_thread, -1);
@@ -4050,10 +4048,12 @@ static void *s3_virge_init(const device_t *info)
         virge->wake_render_thread = thread_create_event();
         virge->wake_main_thread = thread_create_event();
         virge->not_full_event = thread_create_event();
+        virge->render_thread_state = 1;
         virge->render_thread = thread_create(render_thread, virge);
 
         virge->wake_fifo_thread = thread_create_event();
         virge->fifo_not_full_event = thread_create_event();
+        virge->fifo_thread_state = 1;
         virge->fifo_thread = thread_create(fifo_thread, virge);
  
         //ddc_init();
@@ -4151,10 +4151,12 @@ static void *s3_virge_375_init()
         virge->wake_render_thread = thread_create_event();
         virge->wake_main_thread = thread_create_event();
         virge->not_full_event = thread_create_event();
+        virge->render_thread_state = 1;
         virge->render_thread = thread_create(render_thread, virge);
 
         virge->wake_fifo_thread = thread_create_event();
         virge->fifo_not_full_event = thread_create_event();
+        virge->fifo_thread_state = 1;
         virge->fifo_thread = thread_create(fifo_thread, virge);
 
         //ddc_init();