On Wed, 29 Aug 2018 01:01:38 +0200, Martijn van Duren
<[email protected]> wrote:
> I agree that we should mention that radeon cards are known to cause
> issues, but I don't know the best place for them. Diff below places
> them in the Makefile, but maybe we want them somewhere where users
> can find them more easily (readme?).
I tried your diff and it failed:
$ fretsonfire
Traceback (most recent call last):
File "/usr/local/share/fretsonfire/src/GameEngine.py", line 355, in run
return self.mainloop()
File "/usr/local/share/fretsonfire/src/GameEngine.py", line 347, in main
self.view.render()
File "/usr/local/share/fretsonfire/src/View.py", line 183, in render
layer.render(self.visibility[layer], layer == self.layers[-1])
File "/usr/local/share/fretsonfire/src/Menu.py", line 207, in render
font.render(text, (x - v / 4, y))
File "/usr/local/share/fretsonfire/src/Font.py", line 179, in render
self._renderString(text, (pos[0] + 0.003, pos[1] + 0.003), direction, scale)
File "/usr/local/share/fretsonfire/src/Font.py", line 112, in _renderString
g, coordinates = self.getGlyph(ch)
File "/usr/local/share/fretsonfire/src/Font.py", line 233, in getGlyph
coordinates = texture.add(s)
File "/usr/local/share/fretsonfire/src/Texture.py", line 379, in add
self.texture.loadSubsurface(surface, position = (x, y), alphaChannel = True)
File "/usr/local/share/fretsonfire/src/Texture.py", line 282, in
loadSubsurface
string = pygame.image.tobytes(surface, "RGBA", True)
AttributeError: 'module' object has no attribute 'tobytes'
I tried the diff tb send off list and it has a patch for Font.py. With
it, the game would at least start. I think you have your luck to audit
everything and become the new upstream ;)
I don't really have an opinion on to where to mark it for radeon card.
Here's tb diff for the Font.py patch.
Index: Makefile
===================================================================
RCS file: /cvs/ports/games/fretsonfire/Makefile,v
retrieving revision 1.15
diff -u -p -r1.15 Makefile
--- Makefile 29 Sep 2015 10:52:12 -0000 1.15
+++ Makefile 29 Aug 2018 00:40:22 -0000
@@ -1,6 +1,6 @@
# $OpenBSD: Makefile,v 1.15 2015/09/29 10:52:12 sthen Exp $
-BROKEN = fails at runtime "python2.7 in free(): error: modified chunk-pointer
0x..."
+#BROKEN = fails at runtime "python2.7 in free(): error: modified chunk-pointer
0x..."
V = 1.3.110
COMMENT = guitar hero clone
Index: patches/patch-src_Font_py
===================================================================
RCS file: /cvs/ports/games/fretsonfire/patches/patch-src_Font_py,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_Font_py
--- patches/patch-src_Font_py 6 Apr 2014 21:10:25 -0000 1.1
+++ patches/patch-src_Font_py 29 Aug 2018 00:40:22 -0000
@@ -1,12 +1,26 @@
$OpenBSD: patch-src_Font_py,v 1.1 2014/04/06 21:10:25 sthen Exp $
---- src/Font.py.orig Sun Apr 6 18:28:33 2014
-+++ src/Font.py Sun Apr 6 18:28:40 2014
-@@ -206,7 +206,7 @@ class Font:
+Index: src/Font.py
+--- src/Font.py.orig
++++ src/Font.py
+@@ -206,9 +206,9 @@ class Font:
# Draw outlines
"""
- import Image, ImageFilter
+- srcImg = Image.fromstring("RGBA", s.get_size(),
pygame.image.tostring(s, "RGBA"))
+- img = Image.fromstring("RGBA", s.get_size(),
pygame.image.tostring(s, "RGBA"))
+ from PIL import Image, ImageFilter
- srcImg = Image.fromstring("RGBA", s.get_size(),
pygame.image.tostring(s, "RGBA"))
- img = Image.fromstring("RGBA", s.get_size(),
pygame.image.tostring(s, "RGBA"))
++ srcImg = Image.fromstring("RGBA", s.get_size(), pygame.image.tobytes(s,
"RGBA"))
++ img = Image.fromstring("RGBA", s.get_size(), pygame.image.tobytes(s,
"RGBA"))
for y in xrange(img.size[1]):
+ for x in xrange(img.size[0]):
+ a = 0
+@@ -220,7 +220,7 @@ class Font:
+ n += 1
+ if a and srcImg.getpixel((x, y))[3] == 0:
+ img.putpixel((x, y), (0, 0, 0, a / n))
+- s = pygame.image.fromstring(img.tostring(), s.get_size(), "RGBA")
++ s = pygame.image.fromstring(img.tobytes(), s.get_size(), "RGBA")
+ """
+
+ if not self.glyphTextures:
Index: patches/patch-src_Texture_py
===================================================================
RCS file: /cvs/ports/games/fretsonfire/patches/patch-src_Texture_py,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_Texture_py
--- patches/patch-src_Texture_py 6 Apr 2014 21:10:25 -0000 1.1
+++ patches/patch-src_Texture_py 29 Aug 2018 00:40:22 -0000
@@ -1,6 +1,7 @@
$OpenBSD: patch-src_Texture_py,v 1.1 2014/04/06 21:10:25 sthen Exp $
---- src/Texture.py.orig Sun Apr 6 18:28:33 2014
-+++ src/Texture.py Sun Apr 6 18:29:48 2014
+Index: src/Texture.py
+--- src/Texture.py.orig
++++ src/Texture.py
@@ -24,10 +24,10 @@ from __future__ import division
import Log
@@ -14,3 +15,41 @@ $OpenBSD: patch-src_Texture_py,v 1.1 201
from OpenGL.GL import *
from OpenGL.GLU import *
from Queue import Queue, Empty
+@@ -210,13 +210,13 @@ class Texture:
+ """Load the texture from a PIL image"""
+ image = image.transpose(Image.FLIP_TOP_BOTTOM)
+ if image.mode == "RGBA":
+- string = image.tostring('raw', 'RGBA', 0, -1)
++ string = image.tobytes('raw', 'RGBA', 0, -1)
+ self.loadRaw(image.size, string, GL_RGBA, 4)
+ elif image.mode == "RGB":
+- string = image.tostring('raw', 'RGB', 0, -1)
++ string = image.tobytes('raw', 'RGB', 0, -1)
+ self.loadRaw(image.size, string, GL_RGB, 3)
+ elif image.mode == "L":
+- string = image.tostring('raw', 'L', 0, -1)
++ string = image.tobytes('raw', 'L', 0, -1)
+ self.loadRaw(image.size, string, GL_LUMINANCE, 1)
+ else:
+ raise TextureException("Unsupported image mode '%s'" % image.mode)
+@@ -254,16 +254,16 @@ class Texture:
+ if monochrome:
+ # pygame doesn't support monochrome, so the fastest way
+ # appears to be using PIL to do the conversion.
+- string = pygame.image.tostring(surface, "RGB")
++ string = pygame.image.tobytes(surface, "RGB")
+ image = Image.fromstring("RGB", surface.get_size(), string).convert("L")
+- string = image.tostring('raw', 'L', 0, -1)
++ string = image.tobytes('raw', 'L', 0, -1)
+ self.loadRaw(surface.get_size(), string, GL_LUMINANCE, GL_INTENSITY8)
+ else:
+ if alphaChannel:
+- string = pygame.image.tostring(surface, "RGBA", True)
++ string = pygame.image.tobytes(surface, "RGBA", True)
+ self.loadRaw(surface.get_size(), string, GL_RGBA, 4)
+ else:
+- string = pygame.image.tostring(surface, "RGB", True)
++ string = pygame.image.tobytes(surface, "RGB", True)
+ self.loadRaw(surface.get_size(), string, GL_RGB, 3)
+ self.size = (w / w2, h / h2)
+