rpms/scorched3d/devel scorched3d-opengl-without-context.patch, NONE, 1.1 scorched3d-64bit.patch, 1.4, 1.5 scorched3d.spec, 1.11, 1.12

Hans de Goede (jwrdegoede) fedora-extras-commits at redhat.com
Sun Feb 12 11:16:24 UTC 2006


Author: jwrdegoede

Update of /cvs/extras/rpms/scorched3d/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7016

Modified Files:
	scorched3d-64bit.patch scorched3d.spec 
Added Files:
	scorched3d-opengl-without-context.patch 
Log Message:
* Sun Feb 12 2006 <j.w.r.degoede at hhs.nl> - 39.1-3
- fix server crashing with certain landscape types (patch 13)


scorched3d-opengl-without-context.patch:

--- NEW FILE scorched3d-opengl-without-context.patch ---
diff -ur scorched.orig/src/landscape/LandscapeMaps.cpp scorched/src/landscape/LandscapeMaps.cpp
--- scorched.orig/src/landscape/LandscapeMaps.cpp	2006-02-12 11:09:19.000000000 +0100
+++ scorched/src/landscape/LandscapeMaps.cpp	2006-02-12 10:27:33.000000000 +0100
@@ -92,7 +92,8 @@
 
 void LandscapeMaps::generateObjects(
 	ScorchedContext &context,
-	ProgressCounter *counter)
+	ProgressCounter *counter,
+	bool server)
 {
 	LandscapeTex *tex = &getTex(context);
 
@@ -115,7 +114,7 @@
 			}
 			RandomGenerator objectsGenerator;
 			objectsGenerator.seed(getSeed());
-			objects_.generate(objectsGenerator, *place, context, counter);
+			objects_.generate(objectsGenerator, *place, context, counter, server);
 		}
 	}
 }
diff -ur scorched.orig/src/landscape/LandscapeMaps.h scorched/src/landscape/LandscapeMaps.h
--- scorched.orig/src/landscape/LandscapeMaps.h	2005-06-13 10:24:37.000000000 +0200
+++ scorched/src/landscape/LandscapeMaps.h	2006-02-12 10:23:51.000000000 +0100
@@ -57,7 +57,8 @@
 		LandscapeDefinition *hdef,
 		ProgressCounter *counter = 0);
 	void generateObjects(ScorchedContext &context,
-		ProgressCounter *counter = 0);
+		ProgressCounter *counter = 0,
+		bool server = false);
 
 	// Compresses the level into a form that can be
 	// sent to the clients
diff -ur scorched.orig/src/landscape/LandscapeObjects.cpp scorched/src/landscape/LandscapeObjects.cpp
--- scorched.orig/src/landscape/LandscapeObjects.cpp	2005-07-17 13:32:05.000000000 +0200
+++ scorched/src/landscape/LandscapeObjects.cpp	2006-02-12 10:36:17.000000000 +0100
@@ -111,7 +111,8 @@
 void LandscapeObjects::generate(RandomGenerator &generator, 
 	LandscapePlace &place,
 	ScorchedContext &context,
-	ProgressCounter *counter)
+	ProgressCounter *counter,
+	bool server)
 {
 	if (counter) counter->setNewOp("Populating Landscape");
 
@@ -130,7 +131,7 @@
 			LandscapePlaceObjectsPlacementTree *placement =
 				(LandscapePlaceObjectsPlacementTree *)
 					place.objects[i];
-			gen.generateObjects(generator, *placement, context, counter);
+			gen.generateObjects(generator, *placement, context, counter, server);
 		}
 		else if (0 == strcmp(placementtype.c_str(), "mask"))
 		{
@@ -139,7 +140,7 @@
 			LandscapePlaceObjectsPlacementMask *placement =
 				(LandscapePlaceObjectsPlacementMask *)
 					place.objects[i];
-			gen.generateObjects(generator, *placement, context, counter);
+			gen.generateObjects(generator, *placement, context, counter, server);
 		}
 		else if (0 == strcmp(placementtype.c_str(), "direct"))
 		{
@@ -148,7 +149,7 @@
 			LandscapePlaceObjectsPlacementDirect *placement =
 				(LandscapePlaceObjectsPlacementDirect *)
 					place.objects[i];
-			gen.generateObjects(generator, *placement, context, counter);
+			gen.generateObjects(generator, *placement, context, counter, server);
 		}
 		else
 		{
diff -ur scorched.orig/src/landscape/LandscapeObjects.h scorched/src/landscape/LandscapeObjects.h
--- scorched.orig/src/landscape/LandscapeObjects.h	2005-07-17 13:32:05.000000000 +0200
+++ scorched/src/landscape/LandscapeObjects.h	2006-02-12 10:28:11.000000000 +0100
@@ -40,7 +40,8 @@
 	void generate(RandomGenerator &generator, 
 		LandscapePlace &place,
 		ScorchedContext &context,
-		ProgressCounter *counter = 0);
+		ProgressCounter *counter = 0,
+		bool server = false);
 
 	void removeAllObjects();
 	void removeObjects(ScorchedContext &context,
diff -ur scorched.orig/src/landscape/LandscapeObjectsPlacement.cpp scorched/src/landscape/LandscapeObjectsPlacement.cpp
--- scorched.orig/src/landscape/LandscapeObjectsPlacement.cpp	2006-02-12 11:09:19.000000000 +0100
+++ scorched/src/landscape/LandscapeObjectsPlacement.cpp	2006-02-12 10:45:42.000000000 +0100
@@ -34,7 +34,8 @@
 	RandomGenerator &generator, 
 	LandscapePlaceObjectsPlacementTree &placement,
 	ScorchedContext &context,
-	ProgressCounter *counter)
+	ProgressCounter *counter,
+	bool server)
 {
 	// Generate a map of where the trees should go
 	unsigned char objectMap[64 * 64];
@@ -164,7 +165,12 @@
 			placement.objecttype.c_str());
 	}
 
-	float mult = (float) Landscape::instance()->getMainMap().getWidth() / 256.0f;
+	float mult;
+	// Do not draw/use Landscape::instance()->getMainMap() when running
+	// as server, because LandScape uses openGL functions and the server
+	// does not have an openGL context set.
+	if (!server)
+		mult = (float) Landscape::instance()->getMainMap().getWidth() / 256.0f;
 
 	LandscapeObjectsGroupEntry *group = 0;
 	if (placement.groupname.c_str()[0])
@@ -219,8 +226,12 @@
 					//Vector position(entry->posX, entry->posY, entry->posZ);
 					//DeformLandscape::flattenArea(context, position, 0);
 
-					GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
-						lx * mult, ly * mult, modelSize * entry->size * mult, 1.0f);
+					// Do not draw/use Landscape::instance()->getMainMap() when running
+					// as server, because LandScape uses openGL functions and the server
+					// does not have an openGL context set.
+					if (!server)
+						GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
+							lx * mult, ly * mult, modelSize * entry->size * mult, 1.0f);
 				}
 				else
 				{
@@ -237,8 +248,12 @@
 					entry->removeaction = placement.removeaction;
 					entry->burnaction = placement.burnaction;				
 					
-					GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
-						lx * mult, ly * mult, entry->size * mult, 1.0f);
+					// Do not draw/use Landscape::instance()->getMainMap() when running
+					// as server, because LandScape uses openGL functions and the server
+					// does not have an openGL context set.
+					if (!server)
+						GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
+							lx * mult, ly * mult, entry->size * mult, 1.0f);
 				}
 
 				context.landscapeMaps->getObjects().addObject(
@@ -260,7 +275,8 @@
 	RandomGenerator &generator, 
 	LandscapePlaceObjectsPlacementMask &placement,
 	ScorchedContext &context,
-	ProgressCounter *counter)
+	ProgressCounter *counter,
+	bool server)
 {
 	bool pine = true;
 	float snowHeight = 20.0f;
@@ -313,10 +329,14 @@
 			placement.groupname.c_str(), true);
 	}
 
-	float mult = (float) Landscape::instance()->getMainMap().getWidth() / 256.0f;
-
+	float mult; 
 	const int NoIterations = placement.numobjects;
 	int objectCount = 0;
+	// Do not draw/use Landscape::instance()->getMainMap() when running
+	// as server, because LandScape uses openGL functions and the server
+	// does not have an openGL context set.
+	if (!server)
+		mult = (float) Landscape::instance()->getMainMap().getWidth() / 256.0f;
 	for (int i=0; i<NoIterations; i++)
 	{
 		if (i % 1000 == 0) if (counter) 
@@ -402,8 +422,12 @@
 						//Vector position(entry->posX, entry->posY, entry->posZ);
 						//DeformLandscape::flattenArea(context, position, 0);
 
-						GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
-							lx * mult, ly * mult, modelSize * entry->size * mult, 1.0f);
+						// Do not draw/use Landscape::instance()->getMainMap() when running
+						// as server, because LandScape uses openGL functions and the server
+						// does not have an openGL context set.
+						if (!server)
+							GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
+								lx * mult, ly * mult, modelSize * entry->size * mult, 1.0f);
 					}
 					else
 					{
@@ -420,8 +444,12 @@
 						entry->removeaction = placement.removeaction;
 						entry->burnaction = placement.burnaction;
 						
-						GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
-							lx * mult, ly * mult, entry->size * mult, 1.0f);
+						// Do not draw/use Landscape::instance()->getMainMap() when running
+						// as server, because LandScape uses openGL functions and the server
+						// does not have an openGL context set.
+						if (!server)
+							GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
+								lx * mult, ly * mult, entry->size * mult, 1.0f);
 					}
 
 					context.landscapeMaps->getObjects().addObject(
@@ -444,7 +472,8 @@
 	RandomGenerator &generator, 
 	LandscapePlaceObjectsPlacementDirect &placement,
 	ScorchedContext &context,
-	ProgressCounter *counter)
+	ProgressCounter *counter,
+	bool server)
 {
 	bool pine = true;
 	float snowHeight = 20.0f;
@@ -489,7 +518,12 @@
 			placement.groupname.c_str(), true);
 	}
 
-	float mult = (float) Landscape::instance()->getMainMap().getWidth() / 256.0f;
+	float mult;
+	// Do not draw/use Landscape::instance()->getMainMap() when running
+	// as server, because LandScape uses openGL functions and the server
+	// does not have an openGL context set.
+	if (!server)
+		mult = (float) Landscape::instance()->getMainMap().getWidth() / 256.0f;
 
 	std::list<LandscapePlaceObjectsPlacementDirect::Position>::iterator itor;
 	int i = 0;
@@ -526,9 +560,13 @@
 			//Vector position(entry->posX, entry->posY, entry->posZ);
 			//DeformLandscape::flattenArea(context, position, 0);
 
-			GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
-				position.position[0] * mult, position.position[1] * mult, 
-				modelSize * entry->size * mult, 1.0f);
+			// Do not draw/use Landscape::instance()->getMainMap() when running
+			// as server, because LandScape uses openGL functions and the server
+			// does not have an openGL context set.
+			if (!server)
+				GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
+					position.position[0] * mult, position.position[1] * mult, 
+					modelSize * entry->size * mult, 1.0f);
 		}
 		else
 		{
@@ -545,9 +583,13 @@
 			entry->removeaction = placement.removeaction;
 			entry->burnaction = placement.burnaction;
 			
-			GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
-				position.position[0] * mult, position.position[1] * mult, 
-				entry->size * mult, 1.0f);
+			// Do not draw/use Landscape::instance()->getMainMap() when running
+			// as server, because LandScape uses openGL functions and the server
+			// does not have an openGL context set.
+			if (!server)
+				GLBitmapModifier::addCircle(Landscape::instance()->getMainMap(),
+					position.position[0] * mult, position.position[1] * mult, 
+					entry->size * mult, 1.0f);
 		}
 
 		context.landscapeMaps->getObjects().addObject(
diff -ur scorched.orig/src/landscape/LandscapeObjectsPlacement.h scorched/src/landscape/LandscapeObjectsPlacement.h
--- scorched.orig/src/landscape/LandscapeObjectsPlacement.h	2005-06-15 16:21:59.000000000 +0200
+++ scorched/src/landscape/LandscapeObjectsPlacement.h	2006-02-12 10:35:17.000000000 +0100
@@ -33,7 +33,8 @@
 		RandomGenerator &generator, 
 		LandscapePlaceObjectsPlacementTree &placement,
 		ScorchedContext &context,
-		ProgressCounter *counter = 0);
+		ProgressCounter *counter = 0,
+		bool server = false);
 };
 
 class LandscapePlaceObjectsPlacementMask;
@@ -44,7 +45,8 @@
 		RandomGenerator &generator, 
 		LandscapePlaceObjectsPlacementMask &placement,
 		ScorchedContext &context,
-		ProgressCounter *counter = 0);
+		ProgressCounter *counter = 0,
+		bool server = false);
 };
 
 class LandscapePlaceObjectsPlacementDirect;
@@ -55,7 +57,8 @@
 		RandomGenerator &generator, 
 		LandscapePlaceObjectsPlacementDirect &placement,
 		ScorchedContext &context,
-		ProgressCounter *counter = 0);
+		ProgressCounter *counter = 0,
+		bool server = false);
 };
 
 #endif // __INCLUDE_LandscapeObjectsPlacementh_INCLUDE__
diff -ur scorched.orig/src/server/ServerNewGameState.cpp scorched/src/server/ServerNewGameState.cpp
--- scorched.orig/src/server/ServerNewGameState.cpp	2006-02-12 11:09:19.000000000 +0100
+++ scorched/src/server/ServerNewGameState.cpp	2006-02-12 10:24:15.000000000 +0100
@@ -133,7 +133,7 @@
 	ScorchedServer::instance()->getContext().landscapeMaps->generateHMap(
 		ScorchedServer::instance()->getContext(), defn);
 	ScorchedServer::instance()->getContext().landscapeMaps->generateObjects(
-		ScorchedServer::instance()->getContext());
+		ScorchedServer::instance()->getContext(), 0, 1);
 
 	// Set the start positions for the tanks
 	// Must be generated after the level as it alters the

scorched3d-64bit.patch:

Index: scorched3d-64bit.patch
===================================================================
RCS file: /cvs/extras/rpms/scorched3d/devel/scorched3d-64bit.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- scorched3d-64bit.patch	9 Feb 2006 21:57:31 -0000	1.4
+++ scorched3d-64bit.patch	12 Feb 2006 11:16:24 -0000	1.5
@@ -1,16 +1,3 @@
-Only in scorched/data/globalmods/apoc/data/accessories/weapons: moab.txt.cvs
-diff -ur scorched.orig/src/GLEXT/GLTexture.cpp scorched/src/GLEXT/GLTexture.cpp
---- scorched.orig/src/GLEXT/GLTexture.cpp	2006-02-09 14:52:14.000000000 +0100
-+++ scorched/src/GLEXT/GLTexture.cpp	2006-02-09 14:47:28.000000000 +0100
-@@ -119,7 +119,7 @@
- 		if (height == 1 || width == 1) texType_ = GL_TEXTURE_1D;
- 		else texType_ = GL_TEXTURE_2D;
- 
--		if (!textureValid())
-+		if (!texNum_ || !textureValid())
- 		{
- 			GLfloat priority = 1.0f;
- 			glGenTextures(1, &texNum_);
 diff -ur scorched.orig/src/client/ClientConnectionAcceptHandler.cpp scorched/src/client/ClientConnectionAcceptHandler.cpp
 --- scorched.orig/src/client/ClientConnectionAcceptHandler.cpp	2006-02-09 14:52:14.000000000 +0100
 +++ scorched/src/client/ClientConnectionAcceptHandler.cpp	2006-02-09 14:47:28.000000000 +0100


Index: scorched3d.spec
===================================================================
RCS file: /cvs/extras/rpms/scorched3d/devel/scorched3d.spec,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- scorched3d.spec	11 Feb 2006 19:33:16 -0000	1.11
+++ scorched3d.spec	12 Feb 2006 11:16:24 -0000	1.12
@@ -1,6 +1,6 @@
 Name:           scorched3d
 Version:        39.1
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Game based loosely on the classic DOS game Scorched Earth
 
 Group:          Amusements/Games
@@ -21,6 +21,7 @@
 Patch10:        %{name}-negint.patch
 Patch11:        %{name}-XML-injection.patch
 Patch12:        %{name}-HTML-injection.patch
+Patch13:        %{name}-opengl-without-context.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  wxGTK-devel
@@ -69,6 +70,7 @@
 %patch10 -p1
 %patch11 -p1
 %patch12 -p1
+%patch13 -p1
 . autogen.sh
 
 
@@ -118,6 +120,9 @@
 
 
 %changelog
+* Sun Feb 12 2006 <j.w.r.degoede at hhs.nl> - 39.1-3
+- fix server crashing with certain landscape types (patch 13)
+
 * Sat Feb 11 2006 <j.w.r.degoede at hhs.nl> - 39.1-2
 - upgrade to CVS snapshot of 20050929, as Debian does, but not to
   the newer apoc version as this causes problems playing online (patch 0)




More information about the fedora-extras-commits mailing list