146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* 246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner SDL - Simple DirectMedia Layer 346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Copyright (C) 1997-2006 Sam Lantinga 446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner This library is free software; you can redistribute it and/or 646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner modify it under the terms of the GNU Lesser General Public 746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner License as published by the Free Software Foundation; either 846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner version 2.1 of the License, or (at your option) any later version. 946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner This library is distributed in the hope that it will be useful, 1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner but WITHOUT ANY WARRANTY; without even the implied warranty of 1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Lesser General Public License for more details. 1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner You should have received a copy of the GNU Lesser General Public 1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner License along with this library; if not, write to the Free Software 1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Sam Lantinga 2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner slouken@libsdl.org 2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/ 2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h" 2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* These are functions that need to be implemented by a port of SDL */ 2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef _SDL_systhread_h 2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _SDL_systhread_h 2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_thread.h" 3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function creates a thread, passing args to SDL_RunThread(), 3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner saves a system-dependent thread id in thread->id, and returns 0 3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner on success. 3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/ 3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD 3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int SDL_SYS_CreateThread(SDL_Thread *thread, void *args, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread); 3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#else 3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int SDL_SYS_CreateThread(SDL_Thread *thread, void *args); 3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function does any necessary setup in the child thread */ 4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern void SDL_SYS_SetupThread(void); 4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function waits for the thread to finish and frees any data 4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner allocated by SDL_SYS_CreateThread() 4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner */ 4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern void SDL_SYS_WaitThread(SDL_Thread *thread); 4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function kills the thread and returns */ 5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern void SDL_SYS_KillThread(SDL_Thread *thread); 5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* _SDL_systhread_h */ 53