[SCM] A client for connecting to 3D metaverses such as Linden Labs Secondlife(tm) and OpenSim grids branch, master, updated. byteme/1.20.7-1-10-g91941d4

Robin Cornelius robin.cornelius at gmail.com
Thu May 29 16:59:04 UTC 2008


The following commit has been merged in the master branch:
commit 86b70162823912e9768bbc5579ccd9743002a975
Author: Robin Cornelius <robin.cornelius at gmail.com>
Date:   Thu May 29 12:35:54 2008 +0100

    revert code to pre patched version in tree

diff --git a/indra/SConstruct b/indra/SConstruct
index 1fbb686..bfc30aa 100644
--- a/indra/SConstruct
+++ b/indra/SConstruct
@@ -163,6 +163,9 @@ standalone_net_pkgs = [
     'libssl',
     ]
 
+if enable_gstreamer:
+    standalone_pkgs.append( 'gstreamer-0.10' )
+
 def pkgconfig(opt, pkgs=None):
     if pkgs is None:
         pkgs = standalone_pkgs + standalone_net_pkgs
@@ -177,6 +180,8 @@ if standalone:
                               'packages: %s' % ' '.join(missing))
         sys.exit(2)
 
+
+
 #####################
 # ITERATE TARGETS   #
 #####################
diff --git a/indra/llaudio/audioengine_fmod.cpp b/indra/llaudio/audioengine_fmod.cpp
index 271074e..2142e67 100644
--- a/indra/llaudio/audioengine_fmod.cpp
+++ b/indra/llaudio/audioengine_fmod.cpp
@@ -335,6 +335,13 @@ void LLAudioEngine_FMOD::initWind()
 
 void LLAudioEngine_FMOD::cleanupWind()
 {
+#if LL_RELEASE_FOR_DOWNLOAD
+	// This hack exists because fmod likes to occasionally hang forever
+	// when shutting down for no apparent reason.
+	llwarns << "Hack, skipping audio engine cleanup" << llendflush;
+	return;
+#endif
+
 	if (gWindDSP)
 	{
 		FSOUND_DSP_SetActive(gWindDSP, FALSE);
diff --git a/indra/llimage/llimagejpeg.cpp b/indra/llimage/llimagejpeg.cpp
index 0ffa838..00b0e30 100644
--- a/indra/llimage/llimagejpeg.cpp
+++ b/indra/llimage/llimagejpeg.cpp
@@ -35,6 +35,8 @@
 
 #include "llerror.h"
 
+static jmp_buf	gSetjmpBuffer;
+
 LLImageJPEG::LLImageJPEG() 
 	:
 	LLImageFormatted(IMG_CODEC_JPEG),
@@ -77,6 +79,14 @@ BOOL LLImageJPEG::updateData()
 	jerr.emit_message =		&LLImageJPEG::errorEmitMessage;		// Conditionally emit a trace or warning message
 	jerr.output_message =	&LLImageJPEG::errorOutputMessage;	// Routine that actually outputs a trace or error message
 
+	// Establish the setjmp return context mSetjmpBuffer.  Used by library to abort.
+	if( setjmp(gSetjmpBuffer) ) 
+	{
+		// If we get here, the JPEG code has signaled an error.
+		jpeg_destroy_decompress(&cinfo);
+		return FALSE;
+	}
+
 	try
 	{
 		// Now we can initialize the JPEG decompression object.
@@ -209,6 +219,14 @@ BOOL LLImageJPEG::decode(LLImageRaw* raw_image, F32 decode_time)
 	jerr.output_message =	&LLImageJPEG::errorOutputMessage;	// Routine that actually outputs a trace or error message
 	
 
+	// Establish the setjmp return context mSetjmpBuffer.  Used by library to abort.
+	if( setjmp(gSetjmpBuffer) ) 
+	{
+		// If we get here, the JPEG code has signaled an error.
+		jpeg_destroy_decompress(&cinfo);
+		return FALSE;
+	}
+
 	try
 	{
 		// Now we can initialize the JPEG decompression object.
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index 478cc84..27601c0 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -416,9 +416,15 @@ BOOL LLImageJ2COJ::getMetadata(LLImageJ2C &base)
 	/* open a byte stream */
 	cio = opj_cio_open((opj_common_ptr)dinfo, base.getData(), base.getDataSize());
 
-	/* decode the stream and fill the image structure */
-	image = opj_decode(dinfo, cio);
 
+	/* decode the stream and fill the image structure, also fill in an additional
+	   structure to get the decoding result. This structure is a bit unusual in that
+	   it is not received through opj, but still has some dynamically allocated fields
+	   that need to be cleared up at the end by calling a destroy function. */
+	opj_codestream_info_t cinfo;
+	memset(&cinfo, 0, sizeof(opj_codestream_info_t));
+	image = opj_decode_with_info(dinfo, cio, &cinfo);
+	
 	/* close the byte stream */
 	opj_cio_close(cio);
 
diff --git a/indra/llmedia/llmediaimplgstreamer.cpp b/indra/llmedia/llmediaimplgstreamer.cpp
index 5bf30d9..4ec4477 100644
--- a/indra/llmedia/llmediaimplgstreamer.cpp
+++ b/indra/llmedia/llmediaimplgstreamer.cpp
@@ -623,4 +623,25 @@ setVolume(float volume)
 	return false;
 }
 
+bool LLMediaImplGStreamer::isPaused()
+{
+
+	if(getStatus() == LLMediaBase::STATUS_PAUSED)
+		return true;
+
+	return false;
+
+}
+
+bool LLMediaImplGStreamer::isPlaying()
+{
+
+	if(getStatus() == LLMediaBase::STATUS_STARTED)
+		return true;
+
+	return false;
+
+}
+
+
 #endif // LL_GSTREAMER_ENABLED
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 9693df4..bdde8f7 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -1617,6 +1617,11 @@ BOOL LLScrollListCtrl::setSelectedByValue(const LLSD& value, BOOL selected)
 
 BOOL LLScrollListCtrl::isSelected(const LLSD& value) const 
 {
+	if (!getCanSelect())
+	{
+		return NULL;
+	}
+
 	item_list::const_iterator iter;
 	for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
 	{
diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp
index ae87aa1..8d91415 100644
--- a/indra/llvfs/lldir_win32.cpp
+++ b/indra/llvfs/lldir_win32.cpp
@@ -58,6 +58,10 @@ LLDir_Win32::LLDir_Win32()
 
 	mOSUserDir = utf16str_to_utf8str(llutf16string(w_str));
 
+	// Init this to a sensible location it will be updated once we try to login but it could
+	// be used as a write location before then.
+	mLindenUserDir = mOSUserDir;
+
 	// Local Settings\Application Data is where cache files should
 	// go, they don't get copied to the server if the user moves his
 	// profile around on the network. JC
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 0d1d622..339466b 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -68,6 +68,9 @@ extern BOOL gDebugWindowProc;
 
 const S32	MAX_NUM_RESOLUTIONS = 32;
 
+// static variable for ATI mouse cursor crash-bug work around:
+static int ATIbug = FALSE;
+
 //
 // LLWindowSDL
 //
diff --git a/indra/llxml/llxmlparser.cpp b/indra/llxml/llxmlparser.cpp
index 3b4d944..0e6d14b 100644
--- a/indra/llxml/llxmlparser.cpp
+++ b/indra/llxml/llxmlparser.cpp
@@ -129,6 +129,9 @@ exit_label:
 		llwarns << mAuxErrorString << llendl;
 	}
 
+	setlocale(LC_ALL, saved_locale.c_str() );
+
+
 	return success;
 }
 
diff --git a/indra/newview/linux_tools/launch_url.sh b/indra/newview/linux_tools/launch_url.sh
index d2c8919..a855a28 100755
--- a/indra/newview/linux_tools/launch_url.sh
+++ b/indra/newview/linux_tools/launch_url.sh
@@ -54,6 +54,13 @@ if which kfmclient >/dev/null; then
     exit
 fi
 
+# else gnome-open
+# (embodies gnome concept of 'preferred browser')
+if which gnome-open  >/dev/null; then
+    gnome-open "$URL" &
+    exit
+fi
+
 # else x-www-browser
 # (Debianesque idea of a working X browser)
 if which x-www-browser >/dev/null; then
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index eaa2f61..29791d6 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -57,6 +57,11 @@ if [ "$GTK_IM_MODULE" = "scim" ]; then
 fi
 
 
+## - Work around the ATI mouse cursor crash bug:
+if lsmod | grep fglrx &>/dev/null ; then
+	export LL_ATI_MOUSE_CURSOR_BUG=x
+fi
+
 ## Nothing worth editing below this line.
 ##-------------------------------------------------------------------
 
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 75c7cce..6804759 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -490,6 +490,8 @@ BOOL LLMuteList::autoRemove(const LLUUID& agent_id, const EAutoReason reason, co
 		removed = TRUE;
 		remove(automute);
 
+		U32 *preason = new U32(reason);
+
 		if (first_name.empty() && last_name.empty())
 		{
 			char cache_first[DB_FIRST_NAME_BUF_SIZE];		/* Flawfinder: ignore */
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 52f4d1a..82ed8b3 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -645,6 +645,9 @@ BOOL idle_startup()
 		LLViewerMedia::initClass();
 		LLViewerParcelMedia::initClass();
 
+		if (gAudiop)
+			gAudiop->InitStreamer();
+
 		if (gViewerWindow)
 		{
 			audio_update_volume(true);
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 2e4283b..dd98410 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -54,6 +54,9 @@ class LLTextureFetchWorker : public LLWorkerClass
 {
 friend class LLTextureFetch;
 
+public:
+	BOOL mAccelerateDownloadStuckTexture;
+
 private:
 #if 0
 	class URLResponder : public LLHTTPClient::Responder
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index c492c7b..7a378a9 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -929,6 +929,12 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
 		{
 			LLInventoryObject* cargo = locateInventory(item, cat);
 
+			if (!cargo) 
+			{
+				handled = FALSE;
+				break;
+			}
+
 			EAcceptance item_acceptance = ACCEPT_NO;
 			handled = handled && root_view->handleDragAndDrop(x, y, mask, FALSE,
 												mCargoTypes[mCurItemIndex],
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index bd8ed97..d0e6f5b 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -700,6 +700,10 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
 		{
 			objectp = *kill_iter;
 			killObject(objectp);
+
+			// invalidate region pointer. region will become invalid, but 
+			// refcounted objects may survive the cleanDeadObjects() call below
+			objectp->mRegionp = NULL;	 
 		}
 	}
 

-- 
A client for connecting to 3D metaverses such as Linden Labs Secondlife(tm) and OpenSim grids



More information about the Pkg-games-commits mailing list