r15812 - in packages/trunk/pink-pony/debian: . patches
James Cowgill
jcowgill at moszumanska.debian.org
Sun Jun 26 21:51:55 UTC 2016
Author: jcowgill
Date: 2016-06-26 21:51:54 +0000 (Sun, 26 Jun 2016)
New Revision: 15812
Added:
packages/trunk/pink-pony/debian/patches/glfw3.patch
Modified:
packages/trunk/pink-pony/debian/SConstruct
packages/trunk/pink-pony/debian/control
packages/trunk/pink-pony/debian/patches/series
Log:
Port to glfw 3
Modified: packages/trunk/pink-pony/debian/SConstruct
===================================================================
--- packages/trunk/pink-pony/debian/SConstruct 2016-06-26 21:50:43 UTC (rev 15811)
+++ packages/trunk/pink-pony/debian/SConstruct 2016-06-26 21:51:54 UTC (rev 15812)
@@ -8,7 +8,7 @@
env['CPPPATH'] = ['#', '#/src', '#/external/flextGL/', '/usr/include/OpenEXR']
env.ParseConfig("pkg-config IlmBase --cflags --libs")
-env.ParseConfig("pkg-config libglfw --cflags --libs")
+env.ParseConfig("pkg-config glfw3 --cflags --libs")
env.ParseConfig("pkg-config ftgl --cflags --libs")
env.ParseConfig("pkg-config sigc++-2.0 --cflags --libs")
env.ParseConfig("pkg-config SDL_mixer --cflags --libs")
Modified: packages/trunk/pink-pony/debian/control
===================================================================
--- packages/trunk/pink-pony/debian/control 2016-06-26 21:50:43 UTC (rev 15811)
+++ packages/trunk/pink-pony/debian/control 2016-06-26 21:51:54 UTC (rev 15812)
@@ -4,7 +4,7 @@
Maintainer: Debian Games Team <pkg-games-devel at lists.alioth.debian.org>
Uploaders: Miriam Ruiz <miriam at debian.org>
Build-Depends: debhelper (>= 9), quilt, scons, pkg-config, dh-buildinfo,
- mesa-common-dev, libglu1-mesa-dev, libglfw-dev, libxrandr-dev, glee-dev,
+ mesa-common-dev, libglu1-mesa-dev, libglfw3-dev, libxrandr-dev, glee-dev,
libilmbase-dev, libdevil-dev, libftgl-dev, libsigc++-2.0-dev,
libprotobuf-dev (>= 2), protobuf-compiler (>= 2), libtinyxml-dev,
libsdl1.2-dev, libsdl-mixer1.2-dev
Added: packages/trunk/pink-pony/debian/patches/glfw3.patch
===================================================================
--- packages/trunk/pink-pony/debian/patches/glfw3.patch (rev 0)
+++ packages/trunk/pink-pony/debian/patches/glfw3.patch 2016-06-26 21:51:54 UTC (rev 15812)
@@ -0,0 +1,702 @@
+Description: Port to GLFW 3
+ The most significant changes here are:
+ - Having to pass a GLFWwindow* around to various classes.
+ - The key_to_glfw3 function which is needed to allow key ids from old config
+ files to work with GLFW 3.
+Author: James Cowgill <jcowgill at debian.org>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/external/flextGL/flextGL.c
++++ b/external/flextGL/flextGL.c
+@@ -2,7 +2,7 @@
+ /* Do not edit. */
+
+ #include "flextGL.h"
+-#include "GL/glfw.h"
++#include "GLFW/glfw3.h"
+
+ #include <stdio.h>
+
+@@ -14,11 +14,11 @@ extern "C" {
+
+ void flextLoadOpenGLFunctions(void);
+
+-int flextInit(void)
++int flextInit(GLFWwindow* window)
+ {
+
+- int major = glfwGetWindowParam(GLFW_OPENGL_VERSION_MAJOR);
+- int minor = glfwGetWindowParam(GLFW_OPENGL_VERSION_MINOR);
++ int major = glfwGetWindowAttrib(window, GLFW_CONTEXT_VERSION_MAJOR);
++ int minor = glfwGetWindowAttrib(window, GLFW_CONTEXT_VERSION_MINOR);
+
+ flextLoadOpenGLFunctions();
+
+--- a/external/flextGL/flextGL.h
++++ b/external/flextGL/flextGL.h
+@@ -6677,7 +6677,10 @@ extern int FLEXT_ARB_geometry_shader4;
+ extern int FLEXT_EXT_transform_feedback;
+ extern int FLEXT_EXT_texture_filter_anisotropic;
+
+-int flextInit(void);
++struct GLFWwindow;
++typedef struct GLFWwindow GLFWwindow;
++
++int flextInit(GLFWwindow* window);
+
+ #define FLEXT_MAJOR_VERSION 2
+ #define FLEXT_MINOR_VERSION 0
+--- a/src/Config.cc
++++ b/src/Config.cc
+@@ -4,7 +4,7 @@
+ Config::Config()
+ : width(800),
+ height(600),
+- window_mode(GLFW_FULLSCREEN),
++ window_fullscreen(true),
+ fsaa_samples(4),
+ swap_interval(1),
+ polygon_mode(GL_FILL),
+@@ -108,7 +108,7 @@ void Config::set_value(string name, stri
+
+ int ival = 0;
+ float fval = 0.0f;
+- int winmodeval = GLFW_WINDOW;
++ bool winmodeval = false;
+ GLenum polymodeval = GL_FILL;
+ string sval = "";
+ V2f vec2val;
+@@ -153,9 +153,9 @@ void Config::set_value(string name, stri
+
+ if (value.find("window") != string::npos &&
+ value.find("window") < value.find(';')) {
+- winmodeval = GLFW_WINDOW;
++ winmodeval = false;
+ } else {
+- winmodeval = GLFW_FULLSCREEN;
++ winmodeval = true;
+ }
+
+ if (value.find("fill") != string::npos &&
+@@ -177,7 +177,7 @@ void Config::set_value(string name, stri
+
+ if (name == "width") width = ival;
+ else if (name == "height") height = ival;
+- else if (name == "window_mode") window_mode = winmodeval;
++ else if (name == "window_mode") window_fullscreen = winmodeval;
+ else if (name == "fsaa_samples") fsaa_samples = ival;
+ else if (name == "swap_interval") swap_interval = ival;
+ else if (name == "polygon_mode") polygon_mode = polymodeval;
+@@ -321,7 +321,7 @@ bool Config::write_file(string filename)
+ os << "height = " << height << ";" << endl;
+ os << "swap_interval = " << swap_interval << ";" << endl;
+ os << "window_mode = ";
+- if (window_mode == GLFW_WINDOW)
++ if (!window_fullscreen)
+ os << "window;" << endl;
+ else
+ os << "fullscreen;" << endl;
+--- a/src/Config.hh
++++ b/src/Config.hh
+@@ -10,7 +10,7 @@ class Config
+
+ // Window properties:
+ int width, height;
+- int window_mode;
++ bool window_fullscreen;
+ int fsaa_samples;
+ int swap_interval;
+ GLenum polygon_mode;
+--- a/src/Menu.cc
++++ b/src/Menu.cc
+@@ -7,21 +7,21 @@
+
+ Menu* Menu::callback_menu = NULL;
+
+-void GLFWCALL menu_mouse_callback(int button, int action)
++void menu_mouse_callback(GLFWwindow* window, int button, int action, int mods)
+ {
+ if (Menu::callback_menu != NULL)
+ Menu::callback_menu->mouse_callback(button, action);
+ }
+
+-void GLFWCALL menu_resize_callback(int width, int height)
++void menu_resize_callback(GLFWwindow* window, int width, int height)
+ {
+ if (Menu::callback_menu != NULL)
+ Menu::callback_menu->resize_callback(width, height);
+ }
+
+-void GLFWCALL menu_key_callback(int key, int state)
++void menu_key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
+ {
+- if (state != GLFW_PRESS || Menu::callback_menu == NULL )
++ if (action != GLFW_PRESS || Menu::callback_menu == NULL )
+ return;
+
+ if (key == GLFW_KEY_SPACE)
+@@ -34,7 +34,7 @@ void GLFWCALL menu_key_callback(int key,
+
+ void Menu::toggle_fullscreen(void)
+ {
+- config->window_mode = (config->window_mode == GLFW_WINDOW)?GLFW_FULLSCREEN:GLFW_WINDOW;
++ config->window_fullscreen = !config->window_fullscreen;
+ status = RESET;
+ running = false;
+ }
+@@ -48,9 +48,9 @@ void Menu::toggle_music(void)
+
+ void Menu::mouse_callback(int button, int action)
+ {
+- int x,y;
++ double x,y;
+
+- glfwGetMousePos(&x, &y);
++ glfwGetCursorPos(window, &x, &y);
+
+ if (action == GLFW_PRESS) {
+ V2f pos(x,screen_size.y - y);
+@@ -84,10 +84,12 @@ void Menu::resize_callback(int width, in
+ #define TEXT_COLOR Color4f(1,1,1,0.5)
+
+ Menu::Menu (Config* config,
+- Skydome* skydome)
++ Skydome* skydome,
++ GLFWwindow* window)
+ : active_screen(MAIN_SCREEN),
+ config(config),
+ skydome(skydome),
++ window(window),
+ heightmap(NULL),
+ logo_button(config->resource_dir + "textures/logo.png"),
+ start_button("Start", config),
+@@ -136,7 +138,7 @@ Menu::Menu (Config* config,
+ load_levels(config->resource_dir + config->levels_file);
+
+ int w,h;
+- glfwGetWindowSize(&w,&h);
++ glfwGetWindowSize(window, &w, &h);
+ resize_callback(w,h);
+
+ next_level(0);
+@@ -151,15 +153,14 @@ Menu::Menu (Config* config,
+
+ void Menu::setup_settings(void)
+ {
+- GLFWvidmode vidmodes[100];
+-
+- int modes_found = glfwGetVideoModes(vidmodes, 100);
++ int modes_found;
++ const GLFWvidmode* vidmodes = glfwGetVideoModes(glfwGetPrimaryMonitor(), &modes_found);
+
+ resolutions.resize(modes_found);
+
+ for (int i = 0; i < modes_found; ++i) {
+- resolutions[i] = V2i(vidmodes[i].Width,
+- vidmodes[i].Height);
++ resolutions[i] = V2i(vidmodes[i].width,
++ vidmodes[i].height);
+ }
+
+ // resolutions.push_back(V2i( 640, 480));
+@@ -187,7 +188,7 @@ void Menu::setup_settings(void)
+ particle_setting = 3;
+ }
+
+- if (config->window_mode == GLFW_WINDOW) {
++ if (!config->window_fullscreen) {
+ fullscreen_setting = 0;
+ } else {
+ fullscreen_setting = 1;
+@@ -242,10 +243,10 @@ void Menu::load_settings(void)
+
+ if (fullscreen_setting == 0) {
+ fullscreen_text.set_text("Window");
+- config->window_mode = GLFW_WINDOW;
++ config->window_fullscreen = false;
+ } else {
+ fullscreen_text.set_text("Fullscreen");
+- config->window_mode = GLFW_FULLSCREEN;
++ config->window_fullscreen = true;
+ }
+
+ if (minimap_setting == 0) {
+@@ -693,16 +694,16 @@ void Menu::reload_level(string level)
+
+ Menu::MenuStatus Menu::run(void)
+ {
+- if (config->window_mode == GLFW_FULLSCREEN)
+- glfwEnable(GLFW_MOUSE_CURSOR);
++ if (config->window_fullscreen)
++ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
+
+ status = START;
+ running = true;
+
+ callback_menu = this;
+- glfwSetMouseButtonCallback(menu_mouse_callback);
+- glfwSetWindowSizeCallback(menu_resize_callback);
+- glfwSetKeyCallback(menu_key_callback);
++ glfwSetMouseButtonCallback(window, menu_mouse_callback);
++ glfwSetWindowSizeCallback(window, menu_resize_callback);
++ glfwSetKeyCallback(window, menu_key_callback);
+
+
+ while (running) {
+@@ -713,25 +714,26 @@ Menu::MenuStatus Menu::run(void)
+
+ draw();
+
+- glfwSwapBuffers();
++ glfwSwapBuffers(window);
++ glfwPollEvents();
+
+- if (glfwGetKey( GLFW_KEY_ESC ) ||
+- !glfwGetWindowParam( GLFW_OPENED )) {
++ if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS ||
++ glfwWindowShouldClose(window)) {
+ status = QUIT;
+ running = false;
+- } else if (glfwGetKey(GLFW_KEY_ENTER)) {
++ } else if (glfwGetKey(window, GLFW_KEY_ENTER) == GLFW_PRESS) {
+ status = START;
+ running = false;
+ }
+ }
+
+- glfwSetMouseButtonCallback(NULL);
+- glfwSetWindowSizeCallback(NULL);
+- glfwSetKeyCallback(NULL);
++ glfwSetMouseButtonCallback(window, NULL);
++ glfwSetWindowSizeCallback(window, NULL);
++ glfwSetKeyCallback(window, NULL);
+ callback_menu = NULL;
+
+- if (config->window_mode == GLFW_FULLSCREEN)
+- glfwDisable(GLFW_MOUSE_CURSOR);
++ if (config->window_fullscreen)
++ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
+
+ return status;
+ }
+--- a/src/Menu.hh
++++ b/src/Menu.hh
+@@ -27,6 +27,7 @@ class Menu
+
+ Config* config;
+ Skydome* skydome;
++ GLFWwindow* window;
+
+ auto_ptr<Heightmap> heightmap;
+
+@@ -137,7 +138,8 @@ class Menu
+ void toggle_music(void);
+
+ Menu(Config* config,
+- Skydome* skydome);
++ Skydome* skydome,
++ GLFWwindow* window);
+
+ MenuStatus run(void);
+
+--- a/src/Pony.cc
++++ b/src/Pony.cc
+@@ -97,16 +97,116 @@ Color4f rgbColor(const Color4f& hsvColor
+ return rgbColor;
+ }
+
++// Converts a glfw2 keycode from the config file to a glfw3 keycode
++static int key_to_glfw3(int encoded_key)
++{
++ static const int keymap[] =
++ {
++ GLFW_KEY_ESCAPE,
++ GLFW_KEY_F1,
++ GLFW_KEY_F2,
++ GLFW_KEY_F3,
++ GLFW_KEY_F4,
++ GLFW_KEY_F5,
++ GLFW_KEY_F6,
++ GLFW_KEY_F7,
++ GLFW_KEY_F8,
++ GLFW_KEY_F9,
++ GLFW_KEY_F10,
++ GLFW_KEY_F11,
++ GLFW_KEY_F12,
++ GLFW_KEY_F13,
++ GLFW_KEY_F14,
++ GLFW_KEY_F15,
++ GLFW_KEY_F16,
++ GLFW_KEY_F17,
++ GLFW_KEY_F18,
++ GLFW_KEY_F19,
++ GLFW_KEY_F20,
++ GLFW_KEY_F21,
++ GLFW_KEY_F22,
++ GLFW_KEY_F23,
++ GLFW_KEY_F24,
++ GLFW_KEY_F25,
++ GLFW_KEY_UP,
++ GLFW_KEY_DOWN,
++ GLFW_KEY_LEFT,
++ GLFW_KEY_RIGHT,
++ GLFW_KEY_LEFT_SHIFT,
++ GLFW_KEY_RIGHT_SHIFT,
++ GLFW_KEY_LEFT_CONTROL,
++ GLFW_KEY_RIGHT_CONTROL,
++ GLFW_KEY_LEFT_ALT,
++ GLFW_KEY_RIGHT_ALT,
++ GLFW_KEY_TAB,
++ GLFW_KEY_ENTER,
++ GLFW_KEY_BACKSPACE,
++ GLFW_KEY_INSERT,
++ GLFW_KEY_DELETE,
++ GLFW_KEY_PAGE_UP,
++ GLFW_KEY_PAGE_DOWN,
++ GLFW_KEY_HOME,
++ GLFW_KEY_END,
++ GLFW_KEY_KP_0,
++ GLFW_KEY_KP_1,
++ GLFW_KEY_KP_2,
++ GLFW_KEY_KP_3,
++ GLFW_KEY_KP_4,
++ GLFW_KEY_KP_5,
++ GLFW_KEY_KP_6,
++ GLFW_KEY_KP_7,
++ GLFW_KEY_KP_8,
++ GLFW_KEY_KP_9,
++ GLFW_KEY_KP_DIVIDE,
++ GLFW_KEY_KP_MULTIPLY,
++ GLFW_KEY_KP_SUBTRACT,
++ GLFW_KEY_KP_ADD,
++ GLFW_KEY_KP_DECIMAL,
++ GLFW_KEY_KP_EQUAL,
++ GLFW_KEY_KP_ENTER,
++ GLFW_KEY_NUM_LOCK,
++ GLFW_KEY_CAPS_LOCK,
++ GLFW_KEY_SCROLL_LOCK,
++ GLFW_KEY_PAUSE,
++ GLFW_KEY_LEFT_SUPER,
++ GLFW_KEY_RIGHT_SUPER,
++ GLFW_KEY_MENU,
++ };
++
++ const int keymap_size = sizeof(keymap) / sizeof(int);
++
++ if (encoded_key >= 'a' && encoded_key <= 'z')
++ {
++ // Convert lowercase to uppercase
++ return encoded_key - 'a' + 'A';
++ }
++ else if (encoded_key >= ' ' && encoded_key <= '~')
++ {
++ // Other printable ASCII characters are left as is
++ return encoded_key;
++ }
++ else if (encoded_key >= 0x101 && encoded_key < 0x101 + keymap_size)
++ {
++ // Transform using mapping array
++ return keymap[encoded_key - 0x101];
++ }
++ else
++ {
++ // Invalid key
++ return 0;
++ }
++}
++
+ Pony::Pony(int i, Config* config, ParticleSystem* particle_system)
+ : pos(config->pony_start[i]),
+ angle(config->pony_start_angle[i]),
+ speed(config->pony_start_speed),
+ slope_angle(0),
+ camera_pos(pos-V2f(sin(angle), cos(angle))),
+- up(config->pony_up[i]),
+- down(config->pony_down[i]),
+- left(config->pony_left[i]),
+- right(config->pony_right[i]),
++ up(key_to_glfw3(config->pony_up[i])),
++ down(key_to_glfw3(config->pony_down[i])),
++ left(key_to_glfw3(config->pony_left[i])),
++ right(key_to_glfw3(config->pony_right[i])),
+ shader(config->resource_dir + config->pony_shader),
+ mesh(),
+ animation(config->resource_dir + "models/Pony-animated.pskeleton"),
+@@ -154,36 +254,35 @@ Pony::Pony(int i, Config* config, Partic
+
+ Pony::Decision PlayerPony::decide(PonyGame* game, int i)
+ {
++ GLFWwindow* window = game->screen()->get_window();
+ Decision decision = {0.0f, 0.0f};
+ float& accel = decision.acceleration;
+ float& steer = decision.steer;
+
+- if (glfwGetKey(up) == GLFW_PRESS)
++ if (glfwGetKey(window, up) == GLFW_PRESS)
+ accel += 1.0;
+- if (glfwGetKey(down) == GLFW_PRESS)
++ if (glfwGetKey(window, down) == GLFW_PRESS)
+ accel -= 1.0;
+
+- if (glfwGetKey(left) == GLFW_PRESS)
++ if (glfwGetKey(window, left) == GLFW_PRESS)
+ steer += 1.0;
+- if (glfwGetKey(right) == GLFW_PRESS)
++ if (glfwGetKey(window, right) == GLFW_PRESS)
+ steer -= 1.0;
+
+- if (glfwGetJoystickParam(i,GLFW_PRESENT) == GL_TRUE) {
++ if (glfwJoystickPresent(i) == GL_TRUE) {
+
+- float axes[10];
+-
+- int n = glfwGetJoystickPos(i,axes,10);
++ int n;
++ const float* axes = glfwGetJoystickAxes(i, &n);
+
+ if (n >= 2) {
+
+- if (fabs(axes[0]) < 0.2) axes[0] = 0.0;
++ if (fabs(axes[0]) >= 0.2)
++ steer -= axes[0] * 2;
+ //accel += axes[1];
+- steer -= axes[0]*2;
+ }
+
+- unsigned char buttons[20];
+-
+- int button_count = glfwGetJoystickButtons(i, buttons, 20);
++ int button_count;
++ const unsigned char* buttons = glfwGetJoystickButtons(i, &button_count);
+
+ if (button_count >= 2) {
+ if (buttons[0] == GLFW_PRESS)
+--- a/src/PonyGame.cc
++++ b/src/PonyGame.cc
+@@ -156,7 +156,7 @@ bool PonyGame::start(PonyPoints& points)
+
+ cout << m_config->player_count << " ponies." << endl;
+
+- GLboolean f1_pressed = glfwGetKey(GLFW_KEY_F1);
++ GLboolean f1_pressed = glfwGetKey(m_screen->get_window(), GLFW_KEY_F1);
+
+ ParticleExplosionSource explosion_source(particle_system);
+
+@@ -376,25 +376,26 @@ bool PonyGame::start(PonyPoints& points)
+
+ getErrors();
+ calc_fps();
+- glfwSwapBuffers();
++ glfwSwapBuffers(m_screen->get_window());
++ glfwPollEvents();
+
+ // Check if still running
+
+- if(glfwGetKey( GLFW_KEY_ESC ) ||
+- !glfwGetWindowParam( GLFW_OPENED )) {
++ if(glfwGetKey(m_screen->get_window(), GLFW_KEY_ESCAPE) ||
++ glfwWindowShouldClose(m_screen->get_window())) {
+ running = false;
+ run_game = false;
+ delay = 0.0;
+ }
+
+
+- if (glfwGetKey(GLFW_KEY_F1) && !f1_pressed) {
++ if (glfwGetKey(m_screen->get_window(), GLFW_KEY_F1) && !f1_pressed) {
+ int current_volume = Mix_VolumeMusic(-1);
+ Mix_VolumeMusic(std::min(128, current_volume + 63) % 128);
+ m_config->music_volume = Mix_VolumeMusic(-1);
+ }
+
+- f1_pressed = glfwGetKey(GLFW_KEY_F1);
++ f1_pressed = glfwGetKey(m_screen->get_window(), GLFW_KEY_F1);
+ }
+
+ return run_game;
+--- a/src/SplitScreen.cc
++++ b/src/SplitScreen.cc
+@@ -2,14 +2,15 @@
+
+ SplitScreen* active_screen = NULL;
+
+-void GLFWCALL screen_size_callback(int width, int height)
++void screen_size_callback(GLFWwindow* window, int width, int height)
+ {
+ if (active_screen != NULL)
+ active_screen->resize(width, height);
+ }
+
+-SplitScreen::SplitScreen(int width, int height, int subscreens)
+- : size(width, height),
++SplitScreen::SplitScreen(GLFWwindow* window, int width, int height, int subscreens)
++ : window(window),
++ size(width, height),
+ subscreen_count(subscreens),
+ current(0)
+ {
+@@ -20,14 +21,19 @@ SplitScreen::~SplitScreen()
+ {
+ if (active_screen == this) {
+ active_screen = NULL;
+- glfwSetWindowSizeCallback(NULL);
++ glfwSetWindowSizeCallback(window, NULL);
+ }
+ }
+
+ void SplitScreen::set_glfw_callback()
+ {
+ active_screen = this;
+- glfwSetWindowSizeCallback(screen_size_callback);
++ glfwSetWindowSizeCallback(window, screen_size_callback);
++
++ // Update window size immediately
++ int width, height;
++ glfwGetWindowSize(window, &width, &height);
++ resize(width, height);
+ }
+
+ void SplitScreen::split(int subscreens)
+--- a/src/SplitScreen.hh
++++ b/src/SplitScreen.hh
+@@ -6,6 +6,7 @@
+
+ class SplitScreen
+ {
++ GLFWwindow* window;
+ V2i size;
+
+ int subscreen_count;
+@@ -17,9 +18,14 @@ class SplitScreen
+
+ public:
+
+- SplitScreen(int width, int height, int subscreens);
++ SplitScreen(GLFWwindow* window, int width, int height, int subscreens);
+ ~SplitScreen();
+
++ GLFWwindow* get_window()
++ {
++ return window;
++ }
++
+ V2i get_size()
+ {
+ return size;
+--- a/src/cinquo.hh
++++ b/src/cinquo.hh
+@@ -1,9 +1,10 @@
+ #pragma once
+
+ #define ILUT_USE_OPENGL
++#define GLFW_INCLUDE_GLU
+
+ #include "flextGL.h"
+-#include <GL/glfw.h>
++#include <GLFW/glfw3.h>
+ #include <string>
+ #include <iostream>
+ #include <vector>
+--- a/src/main.cc
++++ b/src/main.cc
+@@ -33,21 +33,13 @@ int main(int argc, char** argv)
+ }
+
+ glfwInit();
+- glfwOpenWindowHint(GLFW_FSAA_SAMPLES, config.fsaa_samples);
+-
+- glfwOpenWindow(config.width, config.height, // width, height
+- 0, 0, 0, 0, // R, G, B, A
+- 24, 8, // depth, stencil
+- config.window_mode); // GLFW_WINDOW | GLFW_FULLSCREEN
+-
+- glfwSetWindowTitle("Pink Pony <3");
+- glfwSwapInterval(config.swap_interval);
+-
+- if (!flextInit()) {
+- return 1;
+- }
+-
+- bool reset_video = false;
++ glfwWindowHint(GLFW_SAMPLES, config.fsaa_samples);
++ glfwWindowHint(GLFW_DEPTH_BITS, 24);
++ glfwWindowHint(GLFW_STENCIL_BITS, 8);
++
++ bool done_flext_init = false;
++ bool reset_video = true;
++ GLFWwindow* window = NULL;
+
+ Mix_Music* music = NULL;
+ start_music(&music, config.resource_dir + config.background_music);
+@@ -55,26 +47,32 @@ int main(int argc, char** argv)
+ while (running) {
+
+ if (reset_video) {
++ if (window != NULL)
++ glfwDestroyWindow(window);
+
+- glfwTerminate();
+-
+- glfwInit();
+- glfwOpenWindowHint(GLFW_FSAA_SAMPLES, config.fsaa_samples);
+-
+- glfwOpenWindow(config.width, config.height, // width, height
+- 0, 0, 0, 0, // R, G, B, A
+- 24, 8, // depth, stencil
+- config.window_mode); // GLFW_WINDOW | GLFW_FULLSCREEN
+-
+- glfwSetWindowTitle("Pink Pony <3");
++ GLFWmonitor* fullscreen_monitor = NULL;
++ if (config.window_fullscreen)
++ fullscreen_monitor = glfwGetPrimaryMonitor();
++
++ window = glfwCreateWindow(config.width, config.height,
++ "Pink Pony <3",
++ fullscreen_monitor, NULL);
+ glfwSwapInterval(config.swap_interval);
++ glfwMakeContextCurrent(window);
++
++ if (window == NULL || (!done_flext_init && !flextInit(window))) {
++ cerr << "Error initializing GLFW / OpenGL" << endl;
++ glfwTerminate();
++ return 1;
++ }
+
+ reset_video = false;
++ done_flext_init = true;
+
+ getErrors();
+ }
+
+- // We put everything between glfwOpenWindow & glfwTerminate
++ // We put everything between glfwCreateWindow & glfwTerminate
+ // between braces, so that stack variables that need a GL context
+ // are destructed, while the context still exists.
+ {
+@@ -85,7 +83,7 @@ int main(int argc, char** argv)
+ Menu::MenuStatus menu_status;
+
+ {
+- Menu menu(&config, &skydome);
++ Menu menu(&config, &skydome, window);
+
+ menu_status = menu.run();
+ }
+@@ -124,7 +122,7 @@ int main(int argc, char** argv)
+ int human_count = config.player_count - config.ai_count;
+ if (human_count == 0) human_count = config.player_count;
+
+- SplitScreen screen(config.width, config.height, human_count);
++ SplitScreen screen(window, config.width, config.height, human_count);
+ screen.set_glfw_callback();
+
+ PonyGame game(&screen,
+@@ -139,7 +137,7 @@ int main(int argc, char** argv)
+ running = false;
+ }
+
+- if (!glfwGetWindowParam(GLFW_OPENED)) {
++ if (glfwWindowShouldClose(window)) {
+ running = false;
+ }
+ }
Modified: packages/trunk/pink-pony/debian/patches/series
===================================================================
--- packages/trunk/pink-pony/debian/patches/series 2016-06-26 21:50:43 UTC (rev 15811)
+++ packages/trunk/pink-pony/debian/patches/series 2016-06-26 21:51:54 UTC (rev 15812)
@@ -1,3 +1,4 @@
script.patch
datadir.patch
tinyxml.patch
+glfw3.patch
More information about the Pkg-games-commits
mailing list