Tweaks
This commit is contained in:
parent
f40a7c3545
commit
da55fda07a
@ -30,7 +30,7 @@ int media_SDL_PollEvent(SDL_Event *event) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
int media_SDL_PushEvent(SDL_Event *event) {
|
||||
int media_SDL_PushEvent(const SDL_Event *event) {
|
||||
queue.push_back(*event);
|
||||
return 1;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ extern "C" {
|
||||
|
||||
int media_SDL_Init(uint32_t flags);
|
||||
int media_SDL_PollEvent(SDL_Event *event);
|
||||
int media_SDL_PushEvent(SDL_Event *event);
|
||||
int media_SDL_PushEvent(const SDL_Event *event);
|
||||
void media_SDL_WM_SetCaption(const char *title, const char *icon);
|
||||
|
||||
typedef enum {
|
||||
|
@ -65,16 +65,19 @@ struct gl_state_t {
|
||||
}
|
||||
}
|
||||
}
|
||||
[[nodiscard]] bool get_array_enabled_const(const GLenum array) const {
|
||||
return const_cast<gl_state_t *>(this)->get_array_enabled(array);
|
||||
}
|
||||
#ifndef MEDIA_LAYER_TRAMPOLINE_GUEST
|
||||
void send_array_to_driver(const GLenum array) {
|
||||
const bool state = get_array_enabled(array);
|
||||
void send_array_to_driver(const GLenum array) const {
|
||||
const bool state = get_array_enabled_const(array);
|
||||
if (state) {
|
||||
media_glEnableClientState(array);
|
||||
} else {
|
||||
media_glDisableClientState(array);
|
||||
}
|
||||
}
|
||||
void send_to_driver() {
|
||||
void send_to_driver() const {
|
||||
send_array_to_driver(GL_VERTEX_ARRAY);
|
||||
send_array_to_driver(GL_COLOR_ARRAY);
|
||||
send_array_to_driver(GL_TEXTURE_COORD_ARRAY);
|
||||
@ -121,7 +124,7 @@ void _media_restore_gl_state() {
|
||||
#define CALL_GL_POINTER(unique_id, name) \
|
||||
CALL(unique_id, name, unused, ()) \
|
||||
media_glBindBuffer(GL_ARRAY_BUFFER, args.next<GLuint>()); \
|
||||
gl_array_details_t state = args.next<gl_array_details_t>(); \
|
||||
const gl_array_details_t &state = args.next<gl_array_details_t>(); \
|
||||
func(state.size, state.type, state.stride, (const void *) uintptr_t(state.pointer)); \
|
||||
return 0; \
|
||||
}
|
||||
@ -153,7 +156,7 @@ CALL(15, media_glDrawArrays, void, (GLenum mode, GLint first, GLsizei count))
|
||||
#ifdef MEDIA_LAYER_TRAMPOLINE_GUEST
|
||||
trampoline(true, gl_state, mode, first, count);
|
||||
#else
|
||||
gl_state_t gl_state = args.next<gl_state_t>();
|
||||
const gl_state_t &gl_state = args.next<gl_state_t>();
|
||||
gl_state.send_to_driver();
|
||||
GLenum mode = args.next<GLenum>();
|
||||
GLint first = args.next<GLint>();
|
||||
@ -167,7 +170,7 @@ CALL(70, media_glMultiDrawArrays, void, (GLenum mode, const GLint *first, const
|
||||
#ifdef MEDIA_LAYER_TRAMPOLINE_GUEST
|
||||
trampoline(true, gl_state, mode, copy_array(drawcount, first), copy_array(drawcount, count));
|
||||
#else
|
||||
gl_state_t gl_state = args.next<gl_state_t>();
|
||||
const gl_state_t &gl_state = args.next<gl_state_t>();
|
||||
gl_state.send_to_driver();
|
||||
GLenum mode = args.next<GLenum>();
|
||||
uint32_t drawcount;
|
||||
@ -578,7 +581,7 @@ CALL(47, media_glAlphaFunc, void, (GLenum func, GLclampf ref))
|
||||
}
|
||||
|
||||
#ifdef MEDIA_LAYER_TRAMPOLINE_HOST
|
||||
static int get_glGetFloatv_params_size(GLenum pname) {
|
||||
static int get_glGetFloatv_params_size(const GLenum pname) {
|
||||
switch (pname) {
|
||||
case GL_MODELVIEW_MATRIX:
|
||||
case GL_PROJECTION_MATRIX: {
|
||||
@ -588,7 +591,7 @@ static int get_glGetFloatv_params_size(GLenum pname) {
|
||||
return 2;
|
||||
}
|
||||
default: {
|
||||
ERR("Unsupported media_glGetFloatv Property: %u", pname);
|
||||
ERR("Unsupported glGetFloatv Property: %u", pname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -598,7 +601,7 @@ CALL(48, media_glGetFloatv, void, (GLenum pname, GLfloat *params))
|
||||
trampoline(false, pname, uint32_t(params));
|
||||
#else
|
||||
GLenum pname = args.next<GLenum>();
|
||||
int size = get_glGetFloatv_params_size(pname);
|
||||
const int size = get_glGetFloatv_params_size(pname);
|
||||
GLfloat *params = new GLfloat[size];
|
||||
func(pname, params);
|
||||
writer(args.next<uint32_t>(), params, size * sizeof(GLfloat));
|
||||
@ -718,7 +721,7 @@ CALL(58, media_glIsEnabled, GLboolean, (GLenum cap))
|
||||
}
|
||||
|
||||
#ifdef MEDIA_LAYER_TRAMPOLINE_HOST
|
||||
static int get_glGetIntegerv_params_size(GLenum pname) {
|
||||
static int get_glGetIntegerv_params_size(const GLenum pname) {
|
||||
switch (pname) {
|
||||
case GL_TEXTURE_BINDING_2D:
|
||||
case GL_PACK_ALIGNMENT:
|
||||
@ -729,7 +732,7 @@ static int get_glGetIntegerv_params_size(GLenum pname) {
|
||||
return 4;
|
||||
}
|
||||
default: {
|
||||
ERR("Unsupported media_glGetIntegerv Property: %u", pname);
|
||||
ERR("Unsupported glGetIntegerv Property: %u", pname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -743,7 +746,7 @@ CALL(61, media_glGetIntegerv, void, (GLenum pname, GLint *params))
|
||||
trampoline(false, pname, uint32_t(params));
|
||||
#else
|
||||
GLenum pname = args.next<GLenum>();
|
||||
int size = get_glGetIntegerv_params_size(pname);
|
||||
const int size = get_glGetIntegerv_params_size(pname);
|
||||
GLint *params = new GLint[size];
|
||||
func(pname, params);
|
||||
writer(args.next<uint32_t>(), params, size * sizeof(GLint));
|
||||
@ -810,7 +813,7 @@ CALL(72, media_glNormalPointer, void, (GLenum type, GLsizei stride, const void *
|
||||
}
|
||||
#else
|
||||
media_glBindBuffer(GL_ARRAY_BUFFER, args.next<GLuint>());
|
||||
gl_array_details_t state = args.next<gl_array_details_t>();
|
||||
const gl_array_details_t &state = args.next<gl_array_details_t>();
|
||||
func(state.type, state.stride, (const void *) uintptr_t(state.pointer));
|
||||
return 0;
|
||||
#endif
|
||||
|
@ -48,14 +48,6 @@ inline void _handle_trampoline_arg<copy_array>(unsigned char *&out, const copy_a
|
||||
}
|
||||
}
|
||||
}
|
||||
// Variadic Templates
|
||||
__attribute__((unused)) static void _add_to_trampoline_args(__attribute__((unused)) unsigned char *&out) {
|
||||
}
|
||||
template <typename T, typename... Args>
|
||||
void _add_to_trampoline_args(unsigned char *&out, const T &first, Args&&... args) {
|
||||
_handle_trampoline_arg(out, first);
|
||||
_add_to_trampoline_args(out, std::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
// Main Trampoline Function
|
||||
template <typename... Args>
|
||||
@ -63,7 +55,7 @@ unsigned int _trampoline(const unsigned int id, const bool allow_early_return, A
|
||||
// Create Arguments
|
||||
static unsigned char out[MAX_TRAMPOLINE_ARGS_SIZE];
|
||||
unsigned char *end = out;
|
||||
_add_to_trampoline_args(end, std::forward<Args>(args)...);
|
||||
(_handle_trampoline_arg(end, std::forward<Args>(args)), ...); // https://stackoverflow.com/a/25683817
|
||||
const uint32_t length = end - out;
|
||||
// Call
|
||||
uint32_t ret = 0;
|
||||
|
@ -26,9 +26,9 @@ struct TrampolineArguments {
|
||||
|
||||
// Read Next Value
|
||||
template <typename T>
|
||||
T next() {
|
||||
const T &next() {
|
||||
block_pointer(T);
|
||||
T ret = *(const T *) raw_args;
|
||||
const T &ret = *(const T *) raw_args;
|
||||
raw_args += sizeof(T);
|
||||
return ret;
|
||||
}
|
||||
|
@ -29,11 +29,11 @@ CALL(1, media_SDL_PollEvent, int, (SDL_Event *event))
|
||||
#endif
|
||||
}
|
||||
|
||||
CALL(2, media_SDL_PushEvent, int, (SDL_Event *event))
|
||||
CALL(2, media_SDL_PushEvent, int, (const SDL_Event *event))
|
||||
#ifdef MEDIA_LAYER_TRAMPOLINE_GUEST
|
||||
return trampoline(false, *event);
|
||||
#else
|
||||
SDL_Event event = args.next<SDL_Event>();
|
||||
const SDL_Event &event = args.next<SDL_Event>();
|
||||
return func(&event);
|
||||
#endif
|
||||
}
|
||||
|
@ -12,18 +12,17 @@ struct ServerProperty {
|
||||
ServerProperty(const std::string &key_, const std::string &def_, const std::string &comment_):
|
||||
key(key_),
|
||||
def(def_),
|
||||
comment(comment_) {
|
||||
comment(comment_)
|
||||
{
|
||||
get_all().push_back(this);
|
||||
}
|
||||
};
|
||||
|
||||
class ServerProperties {
|
||||
std::map<std::string, std::string> properties;
|
||||
|
||||
public:
|
||||
struct ServerProperties {
|
||||
void load(std::istream &stream);
|
||||
|
||||
[[nodiscard]] std::string get_string(const ServerProperty &property) const;
|
||||
[[nodiscard]] int get_int(const ServerProperty &property) const;
|
||||
[[nodiscard]] bool get_bool(const ServerProperty &property) const;
|
||||
};
|
||||
private:
|
||||
std::map<std::string, std::string> properties;
|
||||
};
|
||||
|
@ -7,14 +7,10 @@ std::vector<const ServerProperty *> &ServerProperty::get_all() {
|
||||
return out;
|
||||
}
|
||||
|
||||
static bool is_true(std::string const& val) {
|
||||
return val == "true" || val == "yes" || val == "1";
|
||||
}
|
||||
|
||||
void ServerProperties::load(std::istream &stream) {
|
||||
std::string line;
|
||||
while (std::getline(stream, line)) {
|
||||
if (line.length() > 0) {
|
||||
if (!line.empty()) {
|
||||
if (line[0] == '#') {
|
||||
continue;
|
||||
}
|
||||
@ -32,9 +28,16 @@ std::string ServerProperties::get_string(const ServerProperty &property) const {
|
||||
}
|
||||
|
||||
int ServerProperties::get_int(const ServerProperty &property) const {
|
||||
return std::stoi(get_string(property));
|
||||
try {
|
||||
return std::stoi(get_string(property));
|
||||
} catch (...) {
|
||||
return std::stoi(property.def);
|
||||
}
|
||||
}
|
||||
|
||||
static bool is_true(const std::string &val) {
|
||||
return val == "true" || val == "yes" || val == "1";
|
||||
}
|
||||
bool ServerProperties::get_bool(const ServerProperty &property) const {
|
||||
return is_true(get_string(property));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user