standalone: revive spu_c64x build
[pcsx_rearmed.git] / deps / libretro-common / rthreads / xenon_sdl_threads.c
1 /* Copyright  (C) 2010-2020 The RetroArch team
2  *
3  * ---------------------------------------------------------------------------------------
4  * The following license statement only applies to this file (xenon_sdl_threads.c).
5  * ---------------------------------------------------------------------------------------
6  *
7  * Permission is hereby granted, free of charge,
8  * to any person obtaining a copy of this software and associated documentation files (the "Software"),
9  * to deal in the Software without restriction, including without limitation the rights to
10  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
11  * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  */
22
23 /* libSDLxenon doesn't implement this yet :[. Implement it very stupidly for now. ;) */
24
25 #include "SDL_thread.h"
26 #include "SDL_mutex.h"
27 #include <stdlib.h>
28 #include <boolean.h>
29
30 SDL_cond *SDL_CreateCond(void)
31 {
32    bool *sleeping = calloc(1, sizeof(*sleeping));
33    return (SDL_cond*)sleeping;
34 }
35
36 void SDL_DestroyCond(SDL_cond *sleeping)
37 {
38    free(sleeping);
39 }
40
41 int SDL_CondWait(SDL_cond *cond, SDL_mutex *lock)
42 {
43    (void)lock;
44    volatile bool *sleeping = (volatile bool*)cond;
45
46    SDL_mutexV(lock);
47    *sleeping = true;
48    while (*sleeping); /* Yeah, we all love busyloops don't we? ._. */
49    SDL_mutexP(lock);
50
51    return 0;
52 }
53
54 int SDL_CondSignal(SDL_cond *cond)
55 {
56    *(volatile bool*)cond = false;
57    return 0;
58 }