mirror of
https://github.com/open-goal/jak-project
synced 2026-05-31 17:32:51 -04:00
9430b4772a
* Implement runtime display (test) * Update runtime.cpp * [game display] add "-nodisplay" argument * style fixes * Update gfx.cpp * [deci2server] fix deadlock when killing a Deci2Server * add libxrandr to linux github test * correct package name to libxrandr-dev * set g_main_thread_id in exec_runtime * add libxinerama to linux test packages * correct the name * add libxcursor1 package * Update linux-workflow.yaml * add libxi-dev * fix constructor for g_main_thread_id * fix submodules + use -nodisplay during tests * move the gfx loop to its own function and use a lambda for exit conditions * fix include * fix include * fix includes (for real this time)
47 lines
930 B
C++
47 lines
930 B
C++
/*!
|
|
* @file gfx.cpp
|
|
* Graphics component for the runtime. Handles some low-level routines.
|
|
*/
|
|
|
|
#include "gfx.h"
|
|
#include "common/log/log.h"
|
|
#include "game/runtime.h"
|
|
#include "display.h"
|
|
|
|
#include "opengl.h"
|
|
|
|
namespace Gfx {
|
|
|
|
void GlfwErrorCallback(int err, const char* msg) {
|
|
lg::error("GLFW ERR {}: " + std::string(msg), err);
|
|
}
|
|
|
|
u32 Init() {
|
|
if (glfwSetErrorCallback(GlfwErrorCallback) != NULL) {
|
|
lg::warn("glfwSetErrorCallback has been re-set!");
|
|
}
|
|
|
|
if (!glfwInit()) {
|
|
lg::error("glfwInit error");
|
|
return 1;
|
|
}
|
|
|
|
if (g_main_thread_id != std::this_thread::get_id()) {
|
|
lg::warn("ran Gfx::Init outside main thread. Init display elsewhere?");
|
|
} else {
|
|
Display::InitDisplay(640, 480, "testy", Display::display);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
u32 Exit() {
|
|
lg::debug("gfx exit");
|
|
Display::KillDisplay(Display::display);
|
|
glfwTerminate();
|
|
glfwSetErrorCallback(NULL);
|
|
return 0;
|
|
}
|
|
|
|
} // namespace Gfx
|