diff options
Diffstat (limited to 'dev-libs/libgraphics/files/0001-Add-something-eggy.patch')
| -rw-r--r-- | dev-libs/libgraphics/files/0001-Add-something-eggy.patch | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/dev-libs/libgraphics/files/0001-Add-something-eggy.patch b/dev-libs/libgraphics/files/0001-Add-something-eggy.patch new file mode 100644 index 00000000..46111a3a --- /dev/null +++ b/dev-libs/libgraphics/files/0001-Add-something-eggy.patch @@ -0,0 +1,155 @@ +From 023128b5ab721e4c72b0fdea7ed8fd732dd5d795 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= <peterix@gmail.com> +Date: Tue, 28 Feb 2012 03:37:10 +0100 +Subject: [PATCH] Add something eggy. + +--- + df | 1 + + g_src/SConscript | 18 +++++++++++++++++- + g_src/curses.h | 2 +- + g_src/eggy.cpp | 29 +++++++++++++++++++++++++++++ + g_src/eggy.h | 23 +++++++++++++++++++++++ + g_src/enabler.cpp | 9 ++++++++- + g_src/graphics.cpp | 4 ++++ + g_src/renderer_curses.cpp | 12 ++++++++++-- + 8 files changed, 93 insertions(+), 5 deletions(-) + create mode 100644 g_src/eggy.cpp + create mode 100644 g_src/eggy.h + +diff --git a/g_src/eggy.h b/g_src/eggy.h +new file mode 100644 +index 0000000..d1f24dc +--- /dev/null ++++ b/g_src/eggy.h +@@ -0,0 +1,23 @@ ++#pragma once ++#ifdef unix ++ #define EggyExport extern "C" __attribute__ ((visibility("default"))) ++#else ++ #ifdef egg_internal ++ #define EggyExport extern "C" __declspec(dllexport) ++ #else ++ #define EggyExport extern "C" __declspec(dllimport) ++ #endif ++#endif ++ ++// hook - called before rendering ++EggyExport int egg_init(void); ++// hook - called before rendering ++EggyExport int egg_shutdown(void); ++// hook - called for each game tick (or more often) ++EggyExport int egg_tick(void); ++// hook - called before rendering ++EggyExport int egg_prerender(void); ++// hook - called for each SDL event, returns 0 when the event has been consumed. 1 otherwise ++EggyExport int egg_sdl_event(void* event); ++// hook - ncurses event, -1 signifies error. ++EggyExport int egg_curses_event(int orig_return); +\ No newline at end of file +diff --git a/g_src/enabler.cpp b/g_src/enabler.cpp +index 115e748..7e838ea 100755 +--- a/g_src/enabler.cpp ++++ b/g_src/enabler.cpp +@@ -11,6 +11,7 @@ + #include "random.h" + #include "init.h" + #include "music_and_sound_g.h" ++#include "eggy.h" + + #ifdef unix + # include <locale.h> +@@ -346,7 +347,7 @@ void enablerst::async_loop() { + if (async_frames < 0) async_frames = 0; + update_fps(); + } +- SDL_NumJoysticks(); // Hook for dfhack ++ egg_tick(); // Hook for dfhack + } + } + +@@ -433,6 +434,8 @@ void enablerst::eventLoop_SDL() + + // Check for SDL events + while (SDL_PollEvent(&event)) { ++ if(!egg_sdl_event(&event)) ++ continue; + // Make sure mainloop isn't running while we're processing input + if (!paused_loop) { + pause_async_loop(); +@@ -574,6 +577,8 @@ int enablerst::loop(string cmdline) { + } else { + renderer = new renderer_opengl(); + } ++ // Tell the egg that we are ready to roll ++ egg_init(); + + // At this point we should have a window that is setup to render DF. + if (init.display.flag.has_flag(INIT_DISPLAY_FLAG_TEXT)) { +@@ -584,6 +589,8 @@ int enablerst::loop(string cmdline) { + SDL_EnableUNICODE(1); + eventLoop_SDL(); + } ++ // Tell egg to leave ++ egg_shutdown(); + + endroutine(); + +diff --git a/g_src/graphics.cpp b/g_src/graphics.cpp +index e255ea8..5a53fe6 100755 +--- a/g_src/graphics.cpp ++++ b/g_src/graphics.cpp +@@ -17,6 +17,8 @@ + #include "svector.h" + #include "ttf_manager.hpp" + ++#include "eggy.h" ++ + #ifdef WIN32 + + /* +@@ -559,4 +561,6 @@ void render_things() + fps_locator(fps.size()); + gps.addst(fps); + } ++ // tell egg to do its dirty obscure things ++ egg_prerender(); + } +diff --git a/g_src/renderer_curses.cpp b/g_src/renderer_curses.cpp +index 69bd907..44b9b96 100755 +--- a/g_src/renderer_curses.cpp ++++ b/g_src/renderer_curses.cpp +@@ -1,3 +1,5 @@ ++#include "eggy.h" ++ + static bool curses_initialized = false; + + static void endwin_void() { +@@ -134,17 +136,23 @@ public: + } + }; + ++static int eggy_getch_wrapper() ++{ ++ int byte = wgetch(*stdscr_p); ++ return egg_curses_event(byte); ++} ++ + // Reads from getch, collapsing utf-8 encoding to the actual unicode + // character. Ncurses symbols (left arrow, etc.) are returned as + // positive values, unicode as negative. Error returns 0. + static int getch_utf8() { +- int byte = wgetch(*stdscr_p); ++ int byte = eggy_getch_wrapper(); + if (byte == ERR) return 0; + if (byte > 0xff) return byte; + int len = decode_utf8_predict_length(byte); + if (!len) return 0; + string input(len,0); input[0] = byte; +- for (int i = 1; i < len; i++) input[i] = wgetch(*stdscr_p); ++ for (int i = 1; i < len; i++) input[i] = eggy_getch_wrapper(); + return -decode_utf8(input); + } + +-- +1.7.12.4 + |
