src/thread/SDL_systhread.h
author Ryan C. Gordon
Mon, 01 Jan 2018 19:16:51 -0500
changeset 11803 454f6dc9cb85
parent 10737 3406a0f8b041
child 11811 5d94cb6b24d3
permissions -rw-r--r--
windows: Remove references to GetVersionExA (thanks, Andrew Pilley!).

"GetVersionExA is deprecated in windows 8.1 and above's SDK, causing a warning
when building against the win10 SDK. Attached patch cleans up the usage for a
warning-free build.

GetVersionExA was being used to test to see if SDL was running on win9x or
winnt. A quick chat with Ryan on twitter suggested that SDL doesn't
officially support win9x anymore, so the call to this can be outright removed.

As an aside, replacing the call to GetVersionExA with VerifyVersionInfoA (the
recommended path) would have been pointless, as VerifyVersionInfoA only
supports VER_PLATFORM_WIN32_NT and doesn't officially support any other value
for dwPlatformId currently. (And it's probable that win9x SDKs didn't have
VerifyVersionInfo* in them anyway.)"

Fixes Bugzilla #4019.
slouken@0
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@10737
     3
  Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
slouken@0
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@0
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@0
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@0
    20
*/
icculus@8093
    21
#include "../SDL_internal.h"
slouken@0
    22
slouken@0
    23
/* These are functions that need to be implemented by a port of SDL */
slouken@0
    24
slouken@10638
    25
#ifndef SDL_systhread_h_
slouken@10638
    26
#define SDL_systhread_h_
slouken@1361
    27
slouken@1361
    28
#include "SDL_thread.h"
slouken@7730
    29
#include "SDL_thread_c.h"
slouken@0
    30
slouken@0
    31
/* This function creates a thread, passing args to SDL_RunThread(),
slouken@0
    32
   saves a system-dependent thread id in thread->id, and returns 0
slouken@0
    33
   on success.
slouken@0
    34
*/
slouken@1471
    35
#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD
slouken@1895
    36
extern int SDL_SYS_CreateThread(SDL_Thread * thread, void *args,
slouken@1895
    37
                                pfnSDL_CurrentBeginThread pfnBeginThread,
slouken@1895
    38
                                pfnSDL_CurrentEndThread pfnEndThread);
icculus@1190
    39
#else
slouken@1895
    40
extern int SDL_SYS_CreateThread(SDL_Thread * thread, void *args);
icculus@1190
    41
#endif
slouken@0
    42
slouken@0
    43
/* This function does any necessary setup in the child thread */
icculus@5969
    44
extern void SDL_SYS_SetupThread(const char *name);
slouken@0
    45
slouken@5509
    46
/* This function sets the current thread priority */
slouken@5509
    47
extern int SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority);
slouken@5506
    48
slouken@0
    49
/* This function waits for the thread to finish and frees any data
slouken@0
    50
   allocated by SDL_SYS_CreateThread()
slouken@0
    51
 */
slouken@1895
    52
extern void SDL_SYS_WaitThread(SDL_Thread * thread);
slouken@0
    53
icculus@7978
    54
/* Mark thread as cleaned up as soon as it exits, without joining. */
icculus@7978
    55
extern void SDL_SYS_DetachThread(SDL_Thread * thread);
icculus@7978
    56
slouken@7393
    57
/* Get the thread local storage for this thread */
slouken@10609
    58
extern SDL_TLSData *SDL_SYS_GetTLSData(void);
slouken@7393
    59
slouken@7393
    60
/* Set the thread local storage for this thread */
slouken@7393
    61
extern int SDL_SYS_SetTLSData(SDL_TLSData *data);
slouken@7393
    62
icculus@10146
    63
/* This is for internal SDL use, so we don't need #ifdefs everywhere. */
icculus@10146
    64
extern SDL_Thread *
icculus@10146
    65
SDL_CreateThreadInternal(int (SDLCALL * fn) (void *), const char *name,
icculus@10146
    66
                         const size_t stacksize, void *data);
icculus@10146
    67
slouken@10638
    68
#endif /* SDL_systhread_h_ */
slouken@3579
    69
slouken@1895
    70
/* vi: set ts=4 sw=4 expandtab: */