Bug#741901: antigrav: Patch for libpng1.6

Tobias Frost tobi at debian.org
Tue Jan 19 08:36:25 UTC 2016


Control: tags 741901 + patch

Dear maintainer,

I've prepared the attached patch for the libpng transition.
However, I currently can only provide the patch but not test it,
especially the "write png" part.

Therefore any feedback is appreciated.

-- 
Tobi

Regards.
diff -Nru antigrav-0.0.3/debian/changelog antigrav-0.0.3/debian/changelog
--- antigrav-0.0.3/debian/changelog	2014-09-02 22:51:53.000000000 +0200
+++ antigrav-0.0.3/debian/changelog	2016-01-19 08:02:38.000000000 +0100
@@ -1,3 +1,10 @@
+antigrav (0.0.3-6.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix for libpng16 (Closes: #741901)
+
+ -- Tobias Frost <tobi at debian.org>  Tue, 19 Jan 2016 08:01:54 +0100
+
 antigrav (0.0.3-6) unstable; urgency=low
 
   [ Evgeni Golov ]
diff -Nru antigrav-0.0.3/debian/patches/06-libpng16.patch antigrav-0.0.3/debian/patches/06-libpng16.patch
--- antigrav-0.0.3/debian/patches/06-libpng16.patch	1970-01-01 01:00:00.000000000 +0100
+++ antigrav-0.0.3/debian/patches/06-libpng16.patch	2016-01-19 09:35:18.000000000 +0100
@@ -0,0 +1,90 @@
+Description: Patch for libpng1.6 API change
+Author: Tobias Frost <tobi at debian.org>
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741901
+Last-Update: 2016-01-19
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/src/m3dtexture.cpp
++++ b/src/m3dtexture.cpp
+@@ -249,7 +249,7 @@
+ 		return -1;
+ 	}
+ 
+-	if(setjmp(pngPtr->jmpbuf))
++	if(setjmp(png_jmpbuf(pngPtr)))
+ 	{
+ 		perror("setjmp");
+ 		png_destroy_read_struct(&pngPtr, &pngInfoPtr, NULL);
+@@ -274,7 +274,7 @@
+ 		ckey = 0;
+ 	}
+ 	
+-	if(colorType != PNG_COLOR_TYPE_RGB_ALPHA || bitDepth != 8 || pngInfoPtr->channels != 4)
++	if(colorType != PNG_COLOR_TYPE_RGB_ALPHA || bitDepth != 8 || png_get_channels(pngPtr, pngInfoPtr) != 4)
+ 	{
+ 		fprintf(stderr, "Only 32-bit RGBA png images are supported\n");
+ 		return -1;
+@@ -283,7 +283,7 @@
+ 	png_read_update_info(pngPtr, pngInfoPtr);
+ 	png_get_IHDR(pngPtr, pngInfoPtr, width, height, &bitDepth, &colorType, &interlaceType, NULL, NULL);
+ 	
+-	(*data) = new unsigned char[(*width) * (*height) * pngInfoPtr->channels];
++	(*data) = new unsigned char[(*width) * (*height) * png_get_channels(pngPtr, pngInfoPtr)];
+ 	if((*data) == NULL)
+ 	{
+ 		fprintf(stderr, "loadPng(): Out of memory !\n");
+@@ -304,7 +304,7 @@
+ 
+ 	for(row = 0; (unsigned int) row < (*height); row++)
+ 	{
+-		rowPointers[row] = (png_bytep)*data + (row * (*width) * pngInfoPtr->channels);
++		rowPointers[row] = (png_bytep)*data + (row * (*width) * png_get_channels(pngPtr, pngInfoPtr));
+ 	}
+ 	png_read_image(pngPtr, rowPointers);
+ 	png_read_end(pngPtr, pngInfoPtr);
+@@ -358,26 +358,30 @@
+ 	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->width = width;
++	// pngInfoPtr->height = height;
++	// likely done by the lib now pngInfoPtr->rowbytes = width * 4;
++	// pngInfoPtr->bit_depth = 8;
++	// pngInfoPtr->interlace_type = 0;
++	// pngInfoPtr->num_palette = 0;
++	// pngInfoPtr->valid = 0;
++
++	png_set_IHDR(pngPtr, pngInfoPtr, width, height, 8,
++	    PNG_COLOR_TYPE_RGB_ALPHA, 0, PNG_COMPRESSION_TYPE_DEFAULT,
++	    PNG_FILTER_TYPE_DEFAULT);
++
++	// 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;
++	// pngInfoPtr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+ 
+ 	png_write_info(pngPtr, pngInfoPtr);
+ 
+-	rowPointers = new png_bytep[pngInfoPtr->height];
++	rowPointers = new png_bytep[png_get_image_height(pngPtr, pngInfoPtr)];
+ 
+-	for(i = 0; (unsigned int) i < pngInfoPtr->height; i++)
++	for(i = 0; (unsigned int) i < png_get_image_height(pngPtr, pngInfoPtr); i++)
+ 	{
+ 		rowPointers[i] = (unsigned char*)data + i * width * 4;
+ 	}
diff -Nru antigrav-0.0.3/debian/patches/series antigrav-0.0.3/debian/patches/series
--- antigrav-0.0.3/debian/patches/series	2014-09-02 22:37:46.000000000 +0200
+++ antigrav-0.0.3/debian/patches/series	2016-01-19 08:03:06.000000000 +0100
@@ -3,3 +3,4 @@
 02_fix_sound.diff
 03_daca_fixes.diff
 05-use-sys-tinyxml.diff
+06-libpng16.patch



More information about the Pkg-games-devel mailing list