diff options
| author | eroen | 2012-10-23 11:10:03 +0200 |
|---|---|---|
| committer | eroen | 2012-10-23 11:10:03 +0200 |
| commit | 0bfcc4f8893fa4a5de068874b00f83360c3792c6 (patch) | |
| tree | 6c9fe32a0c66e4d318e95b2e3ce896de4dfa7ef0 /dev-libs/libgraphics/files | |
| parent | f54eae5ff2e6c6a5894dcab8963d965f89ff783c (diff) | |
| download | eroen-overlay-0bfcc4f8893fa4a5de068874b00f83360c3792c6.tar.gz eroen-overlay-0bfcc4f8893fa4a5de068874b00f83360c3792c6.tar.bz2 eroen-overlay-0bfcc4f8893fa4a5de068874b00f83360c3792c6.tar.xz | |
libegg hooks for ligbraphics
Diffstat (limited to 'dev-libs/libgraphics/files')
| -rw-r--r-- | dev-libs/libgraphics/files/0001-Add-something-eggy.patch | 155 | ||||
| -rw-r--r-- | dev-libs/libgraphics/files/SConscript | 1 | ||||
| -rw-r--r-- | dev-libs/libgraphics/files/SConscript-egg | 50 |
3 files changed, 206 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 + diff --git a/dev-libs/libgraphics/files/SConscript b/dev-libs/libgraphics/files/SConscript index 5b217b9c..6da4304d 100644 --- a/dev-libs/libgraphics/files/SConscript +++ b/dev-libs/libgraphics/files/SConscript @@ -40,6 +40,7 @@ env['CCFLAGS'] += SCons.Util.CLVar(os.environ.get('CFLAGS', '')) env['CXX'] = os.environ.get('CXX', 'g++') env['CXXFLAGS'] += SCons.Util.CLVar(os.environ.get('CXXFLAGS', '')) env['LINKFLAGS'] += SCons.Util.CLVar(os.environ.get('LDFLAGS', '')) +env['LIBPATH'] += SCons.Util.CLVar(os.environ.get('LIBPATH', '')) # Finally, do the build if libgraphics: diff --git a/dev-libs/libgraphics/files/SConscript-egg b/dev-libs/libgraphics/files/SConscript-egg new file mode 100644 index 00000000..dd0161d7 --- /dev/null +++ b/dev-libs/libgraphics/files/SConscript-egg @@ -0,0 +1,50 @@ +# -*- mode: python -*- +from sys import platform +import os +import SCons.Util + +src_dll = ["basics.cpp","command_line.cpp","enabler.cpp","files.cpp", + "find_files_posix.cpp","graphics.cpp","init.cpp","interface.cpp", + "keybindings.cpp","music_and_sound_openal.cpp", "random.cpp", + "textlines.cpp","enabler_input.cpp","ViewBase.cpp", + "KeybindingScreen.cpp", "win32_compat.cpp", "textures.cpp", + "resize++.cpp", "renderer_offscreen.cpp", + "ttf_manager.cpp"] + +dll = '#libs/libgraphics.so' + +libgraphics = True +tetris = False + +# Propagate PATH. We'll just take our chances with non-repeatable builds. +env = Environment(ENV = {'PATH' : os.environ.get('PATH', '/usr/bin:/bin')}) + +# Libraries and linking +env['LIBS']=["SDL_image","z","SDL_ttf","sndfile","egg"] +#env['LINKFLAGS']=['-Wl,-rpath=\$$ORIGIN/libs'] + +# Generic unix, including Linux +env.ParseConfig('pkg-config gtk+-2.0 --cflags --libs') +env.ParseConfig('pkg-config openal --cflags') +env.ParseConfig('pkg-config sndfile --cflags') +env.ParseConfig('pkg-config sdl --cflags --libs') +env.ParseConfig('pkg-config glu --cflags --libs') +env.ParseConfig('pkg-config glew --cflags --libs') + +# flags and compiler +env['CCFLAGS'].append("-Dunix") +env['CXXFLAGS'].append("-std=gnu++0x") +# this is gentoo, respect my flags +env['CC'] = os.environ.get('CC', 'gcc') +env['CCFLAGS'] += SCons.Util.CLVar(os.environ.get('CFLAGS', '')) +env['CXX'] = os.environ.get('CXX', 'g++') +env['CXXFLAGS'] += SCons.Util.CLVar(os.environ.get('CXXFLAGS', '')) +env['LINKFLAGS'] += SCons.Util.CLVar(os.environ.get('LDFLAGS', '')) +env['LIBPATH'] += SCons.Util.CLVar(os.environ.get('LIBPATH', '')) + +# Finally, do the build +if libgraphics: + env.SharedLibrary(dll, src_dll) + +if tetris: + env.Program("#tetris", src_dll + ["tetris.cpp"]) |
