move all the discordrpc stuff to pc_main.c

that means it will now work in D3D11 and D3D12

also 'normalized' the sdl2 main loop
This commit is contained in:
fgsfds 2020-06-13 04:21:47 +03:00
parent ae13e0006b
commit 927d770823
3 changed files with 21 additions and 29 deletions

View File

@ -23,10 +23,6 @@
#include "gfx_dimensions.h" #include "gfx_dimensions.h"
#ifdef DISCORDRPC
#include "pc/discord/discordrpc.h"
#endif
struct SpawnInfo gPlayerSpawnInfos[1]; struct SpawnInfo gPlayerSpawnInfos[1];
struct GraphNode *D_8033A160[0x100]; struct GraphNode *D_8033A160[0x100];
struct Area gAreaData[8]; struct Area gAreaData[8];
@ -425,8 +421,4 @@ void render_game(void) {
D_8032CE74 = NULL; D_8032CE74 = NULL;
D_8032CE78 = 0; D_8032CE78 = 0;
#ifdef DISCORDRPC
discord_update_rich_presence();
#endif
} }

View File

@ -34,10 +34,6 @@
#include "src/pc/controller/controller_keyboard.h" #include "src/pc/controller/controller_keyboard.h"
#ifdef DISCORDRPC
#include "pc/discord/discordrpc.h"
#endif
// TODO: figure out if this shit even works // TODO: figure out if this shit even works
#ifdef VERSION_EU #ifdef VERSION_EU
# define FRAMERATE 25 # define FRAMERATE 25
@ -50,7 +46,6 @@ static const Uint32 FRAME_TIME = 1000 / FRAMERATE;
static SDL_Window *wnd; static SDL_Window *wnd;
static SDL_GLContext ctx = NULL; static SDL_GLContext ctx = NULL;
static int inverted_scancode_table[512]; static int inverted_scancode_table[512];
static Uint32 frame_start = 0;
static kb_callback_t kb_key_down = NULL; static kb_callback_t kb_key_down = NULL;
static kb_callback_t kb_key_up = NULL; static kb_callback_t kb_key_up = NULL;
@ -189,17 +184,11 @@ static void gfx_sdl_init(const char *window_title) {
} }
static void gfx_sdl_main_loop(void (*run_one_game_iter)(void)) { static void gfx_sdl_main_loop(void (*run_one_game_iter)(void)) {
Uint32 t; Uint32 t = SDL_GetTicks();
#ifdef DISCORDRPC run_one_game_iter();
discord_init(); t = SDL_GetTicks() - t;
#endif if (t < FRAME_TIME && configWindow.vsync <= 1)
while (1) { SDL_Delay(FRAME_TIME - t);
t = SDL_GetTicks();
run_one_game_iter();
t = SDL_GetTicks() - t;
if (t < FRAME_TIME && configWindow.vsync <= 1)
SDL_Delay(FRAME_TIME - t);
}
} }
static void gfx_sdl_get_dimensions(uint32_t *width, uint32_t *height) { static void gfx_sdl_get_dimensions(uint32_t *width, uint32_t *height) {
@ -261,9 +250,6 @@ static void gfx_sdl_handle_events(void) {
} }
break; break;
case SDL_QUIT: case SDL_QUIT:
#ifdef DISCORDRPC
discord_shutdown();
#endif
game_exit(); game_exit();
break; break;
} }
@ -283,7 +269,6 @@ static void gfx_sdl_set_keyboard_callbacks(kb_callback_t on_key_down, kb_callbac
} }
static bool gfx_sdl_start_frame(void) { static bool gfx_sdl_start_frame(void) {
frame_start = SDL_GetTicks();
return true; return true;
} }

View File

@ -32,6 +32,10 @@
#include "game/main.h" #include "game/main.h"
#include "game/thread6.h" #include "game/thread6.h"
#ifdef DISCORDRPC
#include "pc/discord/discordrpc.h"
#endif
OSMesg D_80339BEC; OSMesg D_80339BEC;
OSMesgQueue gSIEventMesgQueue; OSMesgQueue gSIEventMesgQueue;
@ -106,6 +110,9 @@ void audio_shutdown(void) {
} }
void game_deinit(void) { void game_deinit(void) {
#ifdef DISCORDRPC
discord_shutdown();
#endif
configfile_save(configfile_name()); configfile_save(configfile_name());
controller_shutdown(); controller_shutdown();
audio_shutdown(); audio_shutdown();
@ -228,12 +235,20 @@ void main_func(void) {
} }
#endif #endif
#ifdef DISCORDRPC
discord_init();
#endif
#ifdef TARGET_WEB #ifdef TARGET_WEB
emscripten_set_main_loop(em_main_loop, 0, 0); emscripten_set_main_loop(em_main_loop, 0, 0);
request_anim_frame(on_anim_frame); request_anim_frame(on_anim_frame);
#else #else
while (true) while (true) {
wm_api->main_loop(produce_one_frame); wm_api->main_loop(produce_one_frame);
#ifdef DISCORDRPC
discord_update_rich_presence();
#endif
}
#endif #endif
} }