summaryrefslogtreecommitdiff
path: root/dev-libs/libgraphics/files
diff options
context:
space:
mode:
authoreroen2012-10-23 11:10:03 +0200
committereroen2012-10-23 11:10:03 +0200
commit0bfcc4f8893fa4a5de068874b00f83360c3792c6 (patch)
tree6c9fe32a0c66e4d318e95b2e3ce896de4dfa7ef0 /dev-libs/libgraphics/files
parentf54eae5ff2e6c6a5894dcab8963d965f89ff783c (diff)
downloaderoen-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.patch155
-rw-r--r--dev-libs/libgraphics/files/SConscript1
-rw-r--r--dev-libs/libgraphics/files/SConscript-egg50
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"])