This repository has been archived on 2024-06-01. You can view files and clone it, but cannot push or open issues or pull requests.
cathook/src/hooks/visual/SDL_GL_SwapWindow.cpp
2018-05-01 17:09:15 +02:00

64 lines
1.7 KiB
C++

/*
Created by Jenny White on 29.04.18.
Copyright (c) 2018 nullworks. All rights reserved.
*/
#include <SDL2/SDL_syswm.h>
#include <MiscTemporary.hpp>
#include <visual/SDLHooks.hpp>
#include "HookedMethods.hpp"
static bool init{ false };
static bool init_wminfo{ false };
static SDL_SysWMinfo wminfo{};
int static_init_wminfo =
(wminfo.version.major = 2, wminfo.version.minor = 0, 1);
typedef SDL_bool (*SDL_GetWindowWMInfo_t)(SDL_Window *window,
SDL_SysWMinfo *info);
static SDL_GetWindowWMInfo_t GetWindowWMInfo = nullptr;
static SDL_GLContext tf2_sdl = nullptr;
namespace hooked_methods
{
DEFINE_HOOKED_METHOD(SDL_GL_SwapWindow, void, SDL_Window *window)
{
if (!init_wminfo)
{
GetWindowWMInfo = *reinterpret_cast<SDL_GetWindowWMInfo_t *>(
sharedobj::libsdl().Pointer(0xFD4D8));
GetWindowWMInfo(window, &wminfo);
init_wminfo = true;
}
if (!sdl_hooks::window)
sdl_hooks::window = window;
if (!tf2_sdl)
tf2_sdl = SDL_GL_GetCurrentContext();
if (cathook && !disable_visuals)
{
PROF_SECTION(SWAPWINDOW_cathook);
if (not init)
{
draw_api::initialize();
init = true;
}
render_cheat_visuals();
}
{
PROF_SECTION(SWAPWINDOW_tf2);
#if EXTERNAL_DRAWING
SDL_GL_MakeCurrent(window, tf2_sdl);
#endif
original::SDL_GL_SwapWindow(window);
// glXMakeContextCurrent(wminfo.info.x11.display,
// wminfo.info.x11.window,
// wminfo.info.x11.window, tf2);
// glXSwapBuffers(wminfo.info.x11.display, wminfo.info.x11.window);
}
}
}