fix bug
This commit is contained in:
@@ -11,7 +11,7 @@ namespace basalt::presenter::cmd_client {
|
||||
DATA_READY = 0x01, ///< Presenter -> Trainer
|
||||
DATA_RECEIVED = 0x02, ///< Trainer -> Presenter
|
||||
ACTIVELY_STOP = 0x21, ///< Presenter-->Trainer
|
||||
STOP_REQUEST = 0X71, ///< Presenter<--Trainer
|
||||
STOP_REQUEST = 0x71, ///< Presenter<--Trainer
|
||||
STOP_RESPONSE = 0x72, ///< Presenter-->Trainer
|
||||
};
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace basalt::presenter::dll_loader {
|
||||
}
|
||||
}
|
||||
|
||||
void *DllLoader::GetFunctionPointer(const char *name) {
|
||||
void *DllLoader::get_function_pointer(const char *name) {
|
||||
if (!m_Handle) throw std::runtime_error("Can not fetch function pointer on not loaded dynamic library.");
|
||||
#if defined(BASALT_OS_WINDOWS)
|
||||
return (void *) GetProcAddress(m_Handle, name);
|
||||
|
||||
@@ -28,21 +28,21 @@ namespace basalt::presenter::dll_loader {
|
||||
~DllLoader();
|
||||
|
||||
private:
|
||||
void* GetFunctionPointer(const char* name);
|
||||
void* get_function_pointer(const char* name);
|
||||
|
||||
public:
|
||||
template<typename T>
|
||||
T* CreateInstance() {
|
||||
T* create_instance() {
|
||||
using Fct = T* (*) ();
|
||||
constexpr char EXPOSE_FUNC_NAME[] = "BSCreateInstance";
|
||||
auto fct = (Fct) GetFunctionPointer(EXPOSE_FUNC_NAME);
|
||||
auto fct = (Fct) get_function_pointer(EXPOSE_FUNC_NAME);
|
||||
return fct();
|
||||
}
|
||||
template<typename T>
|
||||
void DestroyInstance(T* instance) {
|
||||
void destroy_instance(T* instance) {
|
||||
using Fct = void (*)(T*);
|
||||
constexpr char EXPOSE_FUNC_NAME[] = "BSDestroyInstance";
|
||||
auto fct = (Fct) GetFunctionPointer(EXPOSE_FUNC_NAME);
|
||||
auto fct = (Fct) get_function_pointer(EXPOSE_FUNC_NAME);
|
||||
fct(instance);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
#include "dll_loader.hpp"
|
||||
#include "cmd_client.hpp"
|
||||
#include <basalt/char_types.hpp>
|
||||
#include <basalt/engine.hpp>
|
||||
#include <basalt/deliver.hpp>
|
||||
|
||||
namespace engine = ::basalt::shared::engine;
|
||||
using engine::EngineConfig;
|
||||
using engine::IEngine;
|
||||
namespace deliver = ::basalt::shared::deliver;
|
||||
using deliver::DeliverConfig;
|
||||
using deliver::IDeliver;
|
||||
|
||||
namespace dll_loader = ::basalt::presenter::dll_loader;
|
||||
using dll_loader::DllKind;
|
||||
@@ -15,18 +24,18 @@ int main(int argc, char* argv[]) {
|
||||
auto client = CmdClient();
|
||||
auto payload = client.wait_handshake();
|
||||
|
||||
//auto* engine = engine_dll.CreateInstance<Kernel::IEngine>();
|
||||
//auto* deliver = deliver_dll.CreateInstance<Kernel::IDeliver>();
|
||||
auto* engine = engine_dll.create_instance<IEngine>();
|
||||
//auto* deliver = deliver_dll.create_instance<IDeliver>();
|
||||
|
||||
//Kernel::EngineConfig engine_config{.headless = false, .title = BSTEXT("Fuck You"), .width = payload.width, .height = payload.height};
|
||||
//engine->startup(std::move(engine_config));
|
||||
EngineConfig engine_config{.headless = false, .width = payload.width, .height = payload.height};
|
||||
engine->startup(std::move(engine_config));
|
||||
|
||||
while (true) {
|
||||
auto req_stop = false; //engine->tick();
|
||||
auto req_stop = engine->tick();
|
||||
auto can_stop = client.tick(req_stop);
|
||||
if (can_stop) break;
|
||||
}
|
||||
|
||||
//engine->shutdown();
|
||||
//engine_dll.DestroyInstance(engine);
|
||||
engine->shutdown();
|
||||
engine_dll.destroy_instance(engine);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user