summaryrefslogtreecommitdiff
path: root/devel/sdl10/files/patch-ae
diff options
context:
space:
mode:
Diffstat (limited to 'devel/sdl10/files/patch-ae')
-rw-r--r--devel/sdl10/files/patch-ae82
1 files changed, 82 insertions, 0 deletions
diff --git a/devel/sdl10/files/patch-ae b/devel/sdl10/files/patch-ae
new file mode 100644
index 000000000000..e879ae7decea
--- /dev/null
+++ b/devel/sdl10/files/patch-ae
@@ -0,0 +1,82 @@
+--- src/thread/SDL_thread.c.orig Fri Mar 3 01:24:35 2000
++++ src/thread/SDL_thread.c Mon Apr 17 21:05:52 2000
+@@ -30,6 +30,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <unistd.h>
+
+ #include "SDL_error.h"
+ #include "SDL_mutex.h"
+@@ -175,7 +176,7 @@
+ int (*func)(void *);
+ void *data;
+ SDL_Thread *info;
+- SDL_mutex *wait;
++ int wait;
+ } thread_args;
+
+ void SDL_RunThread(void *data)
+@@ -199,8 +200,8 @@
+ userdata = args->data;
+ statusloc = &args->info->status;
+
+ /* Wake up the parent thread */
+- SDL_mutexV(args->wait);
++ args->wait = 1;
+
+ /* Run the function */
+ *statusloc = userfunc(userdata);
+@@ -213,16 +214,16 @@
+ int ret;
+
+ /* Allocate memory for the thread info structure */
+- thread = (SDL_Thread *)malloc(sizeof(*thread));
++ thread = (SDL_Thread *)malloc(sizeof(thread));
+ if ( thread == NULL ) {
+ SDL_OutOfMemory();
+ return(NULL);
+ }
+- memset(thread, 0, (sizeof *thread));
++ memset(thread, 0, (sizeof thread));
+ thread->status = -1;
+
+ /* Set up the arguments for the thread */
+- args = (thread_args *)malloc(sizeof(*args));
++ args = (thread_args *)malloc(sizeof(args));
+ if ( args == NULL ) {
+ SDL_OutOfMemory();
+ free(thread);
+@@ -231,14 +232,7 @@
+ args->func = fn;
+ args->data = data;
+ args->info = thread;
+- args->wait = SDL_CreateMutex();
+- if ( args->wait == NULL ) {
+- free(thread);
+- free(args);
+- SDL_OutOfMemory();
+- return(NULL);
+- }
+- SDL_mutexP(args->wait); /* We will block later */
++ args->wait = 0;
+
+ /* Add the thread to the list of available threads */
+ SDL_AddThread(thread);
+@@ -247,14 +241,14 @@
+ ret = SDL_SYS_CreateThread(thread, args);
+ if ( ret >= 0 ) {
+ /* Wait for the thread function to use arguments */
+- SDL_mutexP(args->wait);
++ while (args->wait == 0)
++ usleep(20000);
+ } else {
+ /* Oops, failed. Gotta free everything */
+ SDL_DelThread(thread);
+ free(thread);
+ thread = NULL;
+ }
+- SDL_DestroyMutex(args->wait);
+ free(args);
+
+ /* Everything is running now */