r5075 - in packages/trunk/antigrav/debian: . patches
Vincent Fourmond
fourmond at alioth.debian.org
Thu Dec 27 14:17:35 UTC 2007
Author: fourmond
Date: 2007-12-27 14:17:34 +0000 (Thu, 27 Dec 2007)
New Revision: 5075
Modified:
packages/trunk/antigrav/debian/changelog
packages/trunk/antigrav/debian/control
packages/trunk/antigrav/debian/patches/01_fix_png_load.diff
packages/trunk/antigrav/debian/patches/02_fix_sound.diff
packages/trunk/antigrav/debian/patches/series
Log:
[antigrav] Fix segfault on AMD64 + tidy up patches
Modified: packages/trunk/antigrav/debian/changelog
===================================================================
--- packages/trunk/antigrav/debian/changelog 2007-12-27 12:06:46 UTC (rev 5074)
+++ packages/trunk/antigrav/debian/changelog 2007-12-27 14:17:34 UTC (rev 5075)
@@ -1,8 +1,11 @@
-antigrav (0.0.3-2) UNRELEASED; urgency=low
+antigrav (0.0.3-2) unstable; urgency=low
- * NOT RELEASED YET
+ * Push back the 01-fix-png-load to fix segfault on (at least) AMD64
+ (Closes: #457944)
+ * Tidy up patches
+ * Added myself to Uploaders
- -- Vincent Fourmond <fourmond at debian.org> Sun, 16 Dec 2007 15:16:37 +0100
+ -- Vincent Fourmond <fourmond at debian.org> Thu, 27 Dec 2007 15:11:07 +0100
antigrav (0.0.3-1) unstable; urgency=low
Modified: packages/trunk/antigrav/debian/control
===================================================================
--- packages/trunk/antigrav/debian/control 2007-12-27 12:06:46 UTC (rev 5074)
+++ packages/trunk/antigrav/debian/control 2007-12-27 14:17:34 UTC (rev 5075)
@@ -2,7 +2,8 @@
Section: games
Priority: optional
Maintainer: Debian Games Team <pkg-games-devel at lists.alioth.debian.org>
-Uploaders: Barry deFreese <bddebian at comcast.net>
+Uploaders: Barry deFreese <bddebian at comcast.net>,
+ Vincent Fourmond <fourmond at debian.org>
Build-Depends: debhelper (>> 5.0.0), autotools-dev, quilt, zlib1g-dev, libpng12-dev, libalut-dev, libopenal-dev, libsdl1.2-dev
Standards-Version: 3.7.3
Homepage: http://www.luolamies.org/software/antigrav/
Modified: packages/trunk/antigrav/debian/patches/01_fix_png_load.diff
===================================================================
--- packages/trunk/antigrav/debian/patches/01_fix_png_load.diff 2007-12-27 12:06:46 UTC (rev 5074)
+++ packages/trunk/antigrav/debian/patches/01_fix_png_load.diff 2007-12-27 14:17:34 UTC (rev 5075)
@@ -88,501 +88,6 @@
return 0;
}
-diff -urN antigrav-0.0.2.orig/src/m3dtexture.cpp.orig antigrav-0.0.2/src/m3dtexture.cpp.orig
---- antigrav-0.0.2.orig/src/m3dtexture.cpp.orig 1969-12-31 19:00:00.000000000 -0500
-+++ antigrav-0.0.2/src/m3dtexture.cpp.orig 2006-08-04 15:38:31.000000000 -0400
-@@ -0,0 +1,491 @@
-+#define GL_GLEXT_PROTOTYPES
-+#include "SDL_opengl.h"
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string>
-+#include <png.h>
-+
-+using namespace std;
-+
-+#include "tinyxml.h"
-+#include "m3dmaterial.h"
-+#include "m3dtexture.h"
-+#include "m3dmesh.h"
-+
-+#include "extensions.h"
-+
-+/// Create a new null object
-+/**
-+ Create a new object and reset rotation, scaling and transformation
-+*/
-+m3dTexture::m3dTexture()
-+{
-+ texUnits = NULL;
-+ numTexUnits = 0;
-+}
-+
-+m3dTexture::~m3dTexture()
-+{
-+// for(int i = 0; i < numTexUnits; i++)
-+// {
-+// glDeleteTextures(1, &texUnits[i].handle);
-+// }
-+
-+ delete[] texUnits;
-+}
-+
-+int m3dTexture::loadFromXML(const TiXmlElement *root)
-+{
-+// for(int i = 0; i < numTexUnits; i++)
-+// {
-+// glDeleteTextures(1, &texUnits[i].handle);
-+// }
-+
-+ delete[] texUnits;
-+
-+ if(string(root->Value()) != "Texture")
-+ {
-+ fprintf(stderr, "Unknown node type: %s (required: %s)\n", root->Value(), "Texture");
-+ return -1;
-+ }
-+
-+ if(root->QueryIntAttribute("units", &numTexUnits) != TIXML_SUCCESS) return -1;
-+
-+ int maxTexUnits;
-+ glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTexUnits);
-+ if(numTexUnits > maxTexUnits) numTexUnits = maxTexUnits;
-+
-+ texUnits = new struct TextureUnit[numTexUnits];
-+
-+ int n = 0;
-+ const TiXmlElement *element = root->FirstChildElement();
-+ const char *attr;
-+ string value;
-+ while(element)
-+ {
-+ value = element->Value();
-+
-+ if(value == "Image")
-+ {
-+ if(n >= numTexUnits)
-+ {
-+ fprintf(stderr, "Invalid: too many texture units!\n");
-+ return -1;
-+ }
-+
-+ attr = element->Attribute("filename");
-+ if(attr == NULL)
-+ {
-+ fprintf(stderr, "Invalid: texture unit without filename!\n");
-+ return -1;
-+ }
-+
-+ texUnits[n].filename = string(attr);
-+
-+ n++;
-+ }
-+
-+ element = element->NextSiblingElement();
-+ }
-+
-+ if(n != numTexUnits)
-+ {
-+ fprintf(stderr, "Invalid texture: incorrect number of texture units (wanted %d, got %d)!\n", numTexUnits, n);
-+ return -1;
-+ }
-+
-+ for(n = 0; n < numTexUnits; n++)
-+ {
-+ unsigned char *data = NULL;
-+
-+ glGenTextures(1, &(texUnits[n].handle));
-+ // ERROR CHECK!
-+
-+ if(loadPNG(texUnits[n].filename.c_str(), &data, &(texUnits[n].width), &(texUnits[n].height)) != 0)
-+ {
-+ fprintf(stderr, "Invalid: can't load texture %s\n", texUnits[n].filename.c_str());
-+ return -1;
-+ }
-+
-+ glBindTexture(GL_TEXTURE_2D, texUnits[n].handle);
-+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texUnits[n].width, texUnits[n].height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
-+
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-+ // Advanced texture parameters here (anisotropy, mipmapping, different filters, etc)
-+ delete[] data;
-+ }
-+
-+ return 0;
-+}
-+
-+int m3dTexture::load(const char *filename)
-+{
-+ return load(1, &filename);
-+}
-+
-+int m3dTexture::load(int num, const char *filenames[])
-+{
-+/* for(int i = 0; i < numTexUnits; i++)
-+ {
-+ glDeleteTextures(1, &texUnits[i].handle);
-+ }*/
-+
-+ delete[] texUnits;
-+
-+ numTexUnits = num;
-+ texUnits = new struct TextureUnit[numTexUnits];
-+
-+ for(int n = 0; n < numTexUnits; n++)
-+ {
-+ texUnits[n].filename = std::string(filenames[n]);
-+
-+ unsigned char *data = NULL;
-+
-+ glGenTextures(1, &(texUnits[n].handle));
-+ // ERROR CHECK!
-+
-+ if(loadPNG(texUnits[n].filename.c_str(), &data, &(texUnits[n].width), &(texUnits[n].height)) != 0)
-+ {
-+ fprintf(stderr, "Invalid: can't load texture %s\n", texUnits[n].filename.c_str());
-+ return -1;
-+ }
-+
-+ glBindTexture(GL_TEXTURE_2D, texUnits[n].handle);
-+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texUnits[n].width, texUnits[n].height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
-+
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-+ // Advanced texture parameters here (anisotropy, mipmapping, different filters, etc)
-+ delete[] data;
-+ }
-+
-+ return 0;
-+}
-+
-+void m3dTexture::bind() const
-+{
-+ if(numTexUnits < 1) return;
-+
-+#ifdef HAVE_MULTITEX
-+ for(int i = 0; i < numTexUnits; i++)
-+ {
-+ mglActiveTextureARB(GL_TEXTURE0_ARB + i);
-+// glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-+ glEnable(GL_TEXTURE_2D);
-+ glBindTexture(GL_TEXTURE_2D, texUnits[i].handle);
-+ }
-+#else
-+ glEnable(GL_TEXTURE_2D);
-+ glBindTexture(GL_TEXTURE_2D, texUnits[0].handle);
-+#endif
-+}
-+
-+int m3dTexture::getNumTexUnits() const
-+{
-+ return numTexUnits;
-+}
-+
-+void m3dTexture::pngReadCallbackSTDIO(png_structp pngPtr, png_bytep data, png_size_t length)
-+{
-+ FILE *f;
-+
-+ f = (FILE*) png_get_io_ptr(pngPtr);
-+ fread(data, length, 1, f);
-+}
-+
-+/// Load a PNG image from a file
-+/**
-+ Only 32-bit RGBA images supported
-+
-+ @param filename the filename to load from
-+ @param data a pointer to an uninitialized data area where the image data will be stored
-+ @param width a pointer where to store the image width
-+ @param height a pointer where to store the image width
-+ @return 0 on success, -1 on failure
-+*/
-+int m3dTexture::loadPNG(const char *filename, unsigned char **data, unsigned int *width, unsigned int *height)
-+{
-+ FILE *f;
-+ int result;
-+
-+ f = fopen(filename, "rb");
-+ if(f == NULL)
-+ {
-+ fprintf(stderr, "Can't open file %s\n", filename);
-+ return -1;
-+ }
-+
-+ result = loadPNG(data, width, height, f, m3dTexture::pngReadCallbackSTDIO);
-+ fclose(f);
-+ return result;
-+}
-+
-+int m3dTexture::loadPNG(unsigned char **data, unsigned int *width, unsigned int *height, void *handle, void (*pngReadCallback)(png_structp ctx, png_bytep area, png_size_t size))
-+{
-+ png_structp pngPtr;
-+ png_infop pngInfoPtr;
-+ int bitDepth, colorType, interlaceType;
-+// unsigned char header[4];
-+ volatile int ckey = -1;
-+ png_color_16 *transv;
-+ png_bytep *rowPointers;
-+ unsigned int row;
-+
-+ pngPtr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
-+ if(!pngPtr)
-+ {
-+ *data = NULL;
-+ return -1;
-+ }
-+
-+ pngInfoPtr = png_create_info_struct(pngPtr);
-+ if(!pngInfoPtr)
-+ {
-+ png_destroy_read_struct(&pngPtr, NULL, NULL);
-+ *data = NULL;
-+ return -1;
-+ }
-+
-+ if(setjmp(pngPtr->jmpbuf))
-+ {
-+ perror("setjmp");
-+ png_destroy_read_struct(&pngPtr, &pngInfoPtr, NULL);
-+ *data = NULL;
-+ return -1;
-+ }
-+
-+ png_set_read_fn(pngPtr, handle, pngReadCallback);
-+
-+ png_read_info(pngPtr, pngInfoPtr);
-+ png_get_IHDR(pngPtr, pngInfoPtr, (png_uint_32*)width, (png_uint_32*)height, &bitDepth, &colorType, &interlaceType, NULL, NULL);
-+
-+ png_set_strip_16(pngPtr);
-+
-+ png_set_packing(pngPtr);
-+
-+ if(png_get_valid(pngPtr, pngInfoPtr, PNG_INFO_tRNS))
-+ {
-+ int num_trans;
-+ unsigned char *trans;
-+ png_get_tRNS(pngPtr, pngInfoPtr, &trans, &num_trans, &transv);
-+ ckey = 0;
-+ }
-+
-+ if(colorType != PNG_COLOR_TYPE_RGB_ALPHA || bitDepth != 8 || pngInfoPtr->channels != 4)
-+ {
-+ fprintf(stderr, "Only 32-bit RGBA png images are supported\n");
-+ return -1;
-+ }
-+
-+ png_read_update_info(pngPtr, pngInfoPtr);
-+ png_get_IHDR(pngPtr, pngInfoPtr, (png_uint_32*)width, (png_uint_32*)height, &bitDepth, &colorType, &interlaceType, NULL, NULL);
-+
-+ (*data) = new unsigned char[(*width) * (*height) * pngInfoPtr->channels];
-+ if((*data) == NULL)
-+ {
-+ fprintf(stderr, "loadPng(): Out of memory !\n");
-+ png_destroy_read_struct(&pngPtr, &pngInfoPtr, NULL);
-+ *data = NULL;
-+ return -1;
-+ }
-+
-+ rowPointers = new png_bytep[*height];
-+ if(!rowPointers)
-+ {
-+ perror("malloc");
-+ png_destroy_read_struct(&pngPtr, &pngInfoPtr, NULL);
-+ delete[] (*data);
-+ *data = NULL;
-+ return -1;
-+ }
-+
-+ for(row = 0; (unsigned int) row < (*height); row++)
-+ {
-+ rowPointers[row] = (png_bytep)*data + (row * (*width) * pngInfoPtr->channels);
-+ }
-+ png_read_image(pngPtr, rowPointers);
-+ png_read_end(pngPtr, pngInfoPtr);
-+
-+ png_destroy_read_struct(&pngPtr, &pngInfoPtr, NULL);
-+ delete[] rowPointers;
-+ return 0;
-+}
-+
-+int m3dTexture::savePNG(const char *filename, const unsigned char *data, unsigned int width, unsigned int height)
-+{
-+ FILE *f;
-+ int result;
-+
-+ f = fopen(filename, "wb");
-+ if(f == NULL)
-+ {
-+ fprintf(stderr, "Can't open %s for writing!\n", filename);
-+ return -1;
-+ }
-+
-+ result = savePNG(data, width, height, (void*)f, m3dTexture::pngWriteCallbackSTDIO, m3dTexture::pngFlushCallbackSTDIO);
-+ fclose(f);
-+ return result;
-+}
-+
-+void m3dTexture::pngWriteCallbackSTDIO(png_structp pngPtr, png_bytep data, png_size_t length)
-+{
-+ FILE *f;
-+
-+ f = (FILE*) png_get_io_ptr(pngPtr);
-+ fwrite(data, length, 1, f);
-+}
-+
-+void m3dTexture::pngFlushCallbackSTDIO(png_structp pngPtr)
-+{
-+ FILE *f;
-+
-+ f = (FILE*) png_get_io_ptr(pngPtr);
-+ fflush(f);
-+}
-+
-+int m3dTexture::savePNG(const unsigned char *data, unsigned int width, unsigned int height, void *handle, void (*pngWriteCallback)(png_structp pngPtr, png_bytep data, png_size_t length), void (*pngFlushCallback)(png_structp pngPtr))
-+{
-+ png_structp pngPtr;
-+ png_infop pngInfoPtr;
-+ png_bytep *rowPointers;
-+ int i;
-+
-+ pngPtr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
-+ pngInfoPtr = png_create_info_struct(pngPtr);
-+ png_set_write_fn(pngPtr, handle, pngWriteCallback, pngFlushCallback);
-+
-+ pngInfoPtr->width = width;
-+ pngInfoPtr->height = height;
-+ pngInfoPtr->rowbytes = width * 4;
-+ pngInfoPtr->bit_depth = 8;
-+ pngInfoPtr->interlace_type = 0;
-+ pngInfoPtr->num_palette = 0;
-+ pngInfoPtr->valid = 0;
-+
-+ pngInfoPtr->sig_bit.red = 8;
-+ pngInfoPtr->sig_bit.green = 8;
-+ pngInfoPtr->sig_bit.blue = 8;
-+ pngInfoPtr->sig_bit.alpha = 8;
-+
-+ pngInfoPtr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
-+
-+ png_write_info(pngPtr, pngInfoPtr);
-+
-+ rowPointers = new png_bytep[pngInfoPtr->height];
-+
-+ for(i = 0; (unsigned int) i < pngInfoPtr->height; i++)
-+ {
-+ rowPointers[i] = (unsigned char*)data + i * width * 4;
-+ }
-+
-+ png_write_image(pngPtr, rowPointers);
-+ png_write_end(pngPtr, pngInfoPtr);
-+ delete rowPointers;
-+ png_destroy_write_struct(&pngPtr, &pngInfoPtr);
-+ return 0;
-+}
-+
-+int m3dTexture::screenshot(const char *filename)
-+{
-+ unsigned char *data;
-+ unsigned int width, height;
-+ unsigned char *ptr1, *ptr2;
-+ unsigned int i, j;
-+
-+ unsigned char temp;
-+ GLint viewport[4];
-+
-+ glGetIntegerv(GL_VIEWPORT, viewport);
-+ width = viewport[2];
-+ height = viewport[3];
-+ data = new unsigned char[width * height * 4];
-+ if(data == NULL)
-+ {
-+ return -1;
-+ }
-+
-+ glReadBuffer(GL_COLOR_BUFFER_BIT);
-+ glReadPixels(viewport[0], viewport[1], viewport[2], viewport[3], GL_RGBA, GL_UNSIGNED_BYTE, data);
-+
-+ ptr1 = data;
-+ for(i = 0; i < height/2; i++)
-+ {
-+ ptr2 = data + (height - i - 1) * width * 4;
-+ for(j = 0 ; j < width * 4; j++)
-+ {
-+ temp = *ptr1;
-+ *ptr1++ = *ptr2;
-+ *ptr2++ = temp;
-+ }
-+ }
-+
-+ if(savePNG(filename, data, width, height) != 0)
-+ {
-+ delete data;
-+ return -1;
-+ }
-+
-+ delete data;
-+ return 0;
-+}
-+
-+
-+GLuint m3dTexture::loadTexture(const char *filename)
-+{
-+ unsigned char *data;
-+ unsigned int width, height;
-+ GLuint tex;
-+
-+ glGenTextures(1, &tex);
-+
-+ if(m3dTexture::loadPNG(filename, &data, &width, &height) != 0)
-+ {
-+ fprintf(stderr, "Can't load texture %s\n", filename);
-+ return 0;
-+ }
-+
-+ glBindTexture(GL_TEXTURE_2D, tex);
-+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
-+ delete[] data;
-+
-+ if(glGetError() != GL_NO_ERROR)
-+ {
-+ return 0;
-+ }
-+
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-+
-+ return tex;
-+}
-+
-+m3dTexture &m3dTexture::operator=(const m3dTexture &t)
-+{
-+ if(&t == this) return *this;
-+
-+// for(int i = 0; i < numTexUnits; i++)
-+// {
-+// glDeleteTextures(1, &texUnits[i].handle);
-+// }
-+
-+ if(t.getNumTexUnits() != numTexUnits || texUnits == NULL)
-+ {
-+ delete[] texUnits;
-+ texUnits = new struct TextureUnit[t.getNumTexUnits()];
-+ }
-+
-+ numTexUnits = t.getNumTexUnits();
-+
-+ for(int i = 0; i < numTexUnits; i++)
-+ {
-+// texUnits[i].filename = t.texUnits[i].filename;
-+ texUnits[i].handle = t.texUnits[i].handle;
-+ texUnits[i].width = t.texUnits[i].width;
-+ texUnits[i].height = t.texUnits[i].height;
-+ }
-+
-+ return *this;
-+}
-+
diff -urN antigrav-0.0.2.orig/src/m3dtexture.h antigrav-0.0.2/src/m3dtexture.h
--- antigrav-0.0.2.orig/src/m3dtexture.h 2006-08-04 15:38:31.000000000 -0400
+++ antigrav-0.0.2/src/m3dtexture.h 2007-12-15 11:07:44.000000000 -0500
Modified: packages/trunk/antigrav/debian/patches/02_fix_sound.diff
===================================================================
--- packages/trunk/antigrav/debian/patches/02_fix_sound.diff 2007-12-27 12:06:46 UTC (rev 5074)
+++ packages/trunk/antigrav/debian/patches/02_fix_sound.diff 2007-12-27 14:17:34 UTC (rev 5075)
@@ -78,234 +78,3 @@
fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
SDL_FreeWAV(wav_buffer);
return AL_NONE;
-diff -urN antigrav-0.0.2.orig/src/main.cpp.orig antigrav-0.0.2/src/main.cpp.orig
---- antigrav-0.0.2.orig/src/main.cpp.orig 1969-12-31 19:00:00.000000000 -0500
-+++ antigrav-0.0.2/src/main.cpp.orig 2006-08-04 15:38:31.000000000 -0400
-@@ -0,0 +1,227 @@
-+#define GL_GLEXT_PROTOTYPES
-+
-+#include "SDL.h"
-+#include "SDL_opengl.h"
-+#include <AL/alut.h>
-+#include <AL/al.h>
-+#include <unistd.h>
-+#include <cstdlib>
-+#include <cstdio>
-+#include <cmath>
-+#include <ctime>
-+
-+#include <getopt.h>
-+
-+#include "antigrav.h"
-+#include "extensions.h"
-+
-+void mainLoop(void);
-+
-+#ifdef HAVE_MULTITEX
-+MFNGLMULTITEXCOORD2FVPROC mglMultiTexCoord2fv = NULL;
-+MFNGLACTIVETEXTUREARBPROC mglActiveTextureARB = NULL;
-+#endif
-+
-+bool opt_fullscreen = true;
-+bool opt_fsaa = false;
-+int opt_width = 1024;
-+const char *help_msg =
-+"Usage: antigrav [options]\n\
-+Options:\n\
-+ -h, --help\t\tprint this help, then exit\n\
-+ -f, --fsaa\t\tenable full screen antialiasing\n\
-+ -w, --windowed\trun in windowed mode\n\
-+ -r, --resolution=RES\tset resolution to RES, 1024 for 1024x768, 800 for 800x600, etc\n";
-+
-+int parse_args(int argc, char *argv[])
-+{
-+
-+ while(true)
-+ {
-+ int option_index = 0;
-+ static struct option long_options[] = {
-+ {"help", no_argument, 0, 'h'},
-+ {"fsaa", no_argument, 0, 'f'},
-+ {"windowed", no_argument, 0, 'w'},
-+ {"resolution", required_argument, 0, 'r'},
-+ {0, 0, 0, 0}
-+ };
-+
-+ int c = getopt_long(argc, argv, "hfwr:", long_options, &option_index);
-+ if(c == -1)
-+ break;
-+
-+ switch(c)
-+ {
-+ case 'h':
-+ printf(help_msg);
-+ return 1;
-+ break;
-+ case 'f':
-+ opt_fsaa = true;
-+ break;
-+ case 'w':
-+ opt_fullscreen = false;
-+ break;
-+ case 'r':
-+ opt_width = atoi(optarg);
-+ break;
-+ default:
-+ puts(help_msg);
-+ return 1;
-+ break;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+void cleanup()
-+{
-+ SDL_Quit();
-+ alutExit();
-+}
-+
-+int main(int argc, char *argv[])
-+{
-+ SDL_Surface *screen;
-+
-+ (void)argc;
-+ (void)argv;
-+
-+ if(parse_args(argc, argv)) return 0;
-+
-+ atexit(cleanup);
-+
-+ if(SDL_Init(SDL_INIT_VIDEO) != 0)
-+ {
-+ fprintf(stderr, "Can't initialize SDL: %s\n", SDL_GetError());
-+ return -1;
-+ }
-+
-+// SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
-+// SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
-+// SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
-+// SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
-+ if(opt_fsaa)
-+ {
-+ SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
-+ SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4);
-+ }
-+
-+ Uint32 flags = SDL_OPENGL;
-+ if(opt_fullscreen) flags |= SDL_FULLSCREEN;
-+
-+ int width = opt_width;
-+ int height = width * 3 / 4;
-+
-+ screen = SDL_SetVideoMode(width, height, 0, flags);
-+ if(screen == NULL)
-+ {
-+ fprintf(stderr, "Can't set video mode: %s\n", SDL_GetError());
-+ return -1;
-+ }
-+
-+#ifdef HAVE_MULTITEX
-+ mglActiveTextureARB = (MFNGLACTIVETEXTUREARBPROC)SDL_GL_GetProcAddress("glActiveTextureARB");
-+ mglMultiTexCoord2fv = (MFNGLMULTITEXCOORD2FVPROC)SDL_GL_GetProcAddress("glMultiTexCoord2fv");
-+ if(mglActiveTextureARB == NULL || mglMultiTexCoord2fv == NULL)
-+ {
-+ fprintf(stderr, "Multitexturing extensions not available!\n");
-+ return -1;
-+ }
-+#endif
-+
-+ if(alutInit(&argc, argv) != AL_TRUE)
-+ {
-+ fprintf(stderr, "Can't initialize OpenAL: %s\n", alutGetErrorString(alutGetError()));
-+ return -1;
-+ }
-+
-+ if(chdir(DATADIR) != 0)
-+ {
-+ if(chdir("../data") != 0)
-+ {
-+ fprintf(stderr, "Can't find data directory in %s or %s\n", DATADIR, "../data");
-+ return -1;
-+ }
-+ }
-+
-+ SDL_WM_SetCaption("antigravitaattori", "antigravitaattori");
-+
-+ // disable mouse cursor
-+ SDL_ShowCursor(SDL_DISABLE);
-+
-+ Game &game = Game::getInstance();
-+ if(game.init()) return 1;
-+ if(Menu::init()) return 1;
-+
-+ Menu menu;
-+ while(1) {
-+ if(menu.show())
-+ return 0;
-+ if(game.gameLoop())
-+ return 0;
-+ }
-+
-+ return 0;
-+}
-+
-+ALuint loadWavBuffer(const char *filename)
-+{
-+ ALuint buffer;
-+ alGenBuffers(1, &buffer);
-+ if(!alIsBuffer(buffer)) return AL_NONE;
-+
-+ SDL_AudioSpec wav_spec;
-+ Uint8 *wav_buffer;
-+ Uint32 wav_length;
-+ if(SDL_LoadWAV(filename, &wav_spec, &wav_buffer, &wav_length) == NULL)
-+ {
-+ fprintf(stderr, "Can't open %s : %s\n", filename, SDL_GetError());
-+ return AL_NONE;
-+ }
-+
-+
-+// AL_FORMAT_MONO8, AL_FORMAT_MONO16, AL_FORMAT_STEREO8, and AL_FORMAT_STEREO16.
-+ int format;
-+
-+ if(wav_spec.channels == 1)
-+ {
-+ if(wav_spec.format == AUDIO_U8) format = AL_FORMAT_MONO8;
-+ else if(wav_spec.format == AUDIO_S16SYS) format = AL_FORMAT_MONO16;
-+ else
-+ {
-+ fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
-+ SDL_FreeWAV(wav_buffer);
-+ return AL_NONE;
-+ }
-+ } else if(wav_spec.channels == 2)
-+ {
-+ if(wav_spec.format == AUDIO_U8) format = AL_FORMAT_STEREO8;
-+ else if(wav_spec.format == AUDIO_S16SYS) format = AL_FORMAT_STEREO16;
-+ else
-+ {
-+ fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
-+ SDL_FreeWAV(wav_buffer);
-+ return AL_NONE;
-+ }
-+ } else
-+ {
-+ fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
-+ SDL_FreeWAV(wav_buffer);
-+ return AL_NONE;
-+ }
-+
-+ alBufferData(buffer, format, wav_buffer, wav_length, wav_spec.freq);
-+ SDL_FreeWAV(wav_buffer);
-+
-+ if(alGetError() != AL_NO_ERROR)
-+ {
-+ fprintf(stderr, "Can't open %s : OpenAL error\n", filename);
-+ return AL_NONE;
-+ }
-+
-+ return buffer;
-+}
-+
Modified: packages/trunk/antigrav/debian/patches/series
===================================================================
--- packages/trunk/antigrav/debian/patches/series 2007-12-27 12:06:46 UTC (rev 5074)
+++ packages/trunk/antigrav/debian/patches/series 2007-12-27 14:17:34 UTC (rev 5075)
@@ -1 +1,2 @@
+01_fix_png_load.diff
02_fix_sound.diff
More information about the Pkg-games-commits
mailing list