From 9d3881ba8473f4461e205ffc7706d92ddde792e7 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 10 Apr 2009 06:34:35 -0500 Subject: Tweaked Mac lib manifest. Removed pango, commented out libopenal, added libxml2. --- linden/indra/newview/viewer_manifest.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 71c07b6..29c8880 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -410,7 +410,7 @@ class DarwinManifest(ViewerManifest): self.path("libndofdev.dylib") - self.path("libopenal.1.dylib") + # self.path("libopenal.1.dylib") self.path("libalut.0.dylib") self.path("libglib-2.0.dylib") @@ -437,12 +437,11 @@ class DarwinManifest(ViewerManifest): self.path("libgsttag-0.10.dylib") self.path("libgstvideo-0.10.dylib") + self.path("libxml2.2.dylib") self.path("libintl.3.dylib") self.path("libjpeg.62.dylib") self.path("libogg.0.dylib") self.path("liboil-0.3.0.dylib") - self.path("libpango-1.0.0.dylib") - self.path("libpangoft2-1.0.0.dylib") self.path("libtheora.0.dylib") self.path("libvorbis.0.dylib") self.path("libvorbisenc.2.dylib") @@ -521,7 +520,6 @@ class DarwinManifest(ViewerManifest): self.path("libgstogg.so") self.path("libgstosxaudio.so") self.path("libgstosxvideosink.so") - self.path("libgstpango.so") self.path("libgstplaybin.so") self.path("libgstpng.so") self.path("libgstpostproc.so") -- cgit v1.1 From 887295546c6b2d6b14362b0f87ebf8328e7400e6 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 10 Apr 2009 19:33:13 -0500 Subject: Help Mac find the right libxml2.2.dylib. --- linden/indra/cmake/GStreamer.cmake | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/GStreamer.cmake b/linden/indra/cmake/GStreamer.cmake index c1bbc57..880233e 100644 --- a/linden/indra/cmake/GStreamer.cmake +++ b/linden/indra/cmake/GStreamer.cmake @@ -64,6 +64,18 @@ else (WINDOWS) if (DARWIN) + find_library( XML2_LIB + NAMES xml2.2 + PATHS ${ARCH_PREBUILT_DIRS_RELEASE} + NO_DEFAULT_PATH + DOC "libxml2 dynamic library / shared object" ) + + if (NOT XML2_LIB) + message(FATAL_ERROR "libxml2 not found!") + else (NOT XML2_LIB) + #message(STATUS "libxml2 found: ${XML2_LIB}") + endif (NOT XML2_LIB) + set(GSTREAMER_LIBRARIES gstvideo-0.10 gstaudio-0.10 @@ -73,7 +85,7 @@ else (WINDOWS) gmodule-2.0 gthread-2.0 glib-2.0 - xml2 + ${XML2_LIB} ) else (DARWIN) -- cgit v1.1 From 4d01487fc7bbcb4796b8329589daac0f5867a109 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 10 Apr 2009 19:52:53 -0500 Subject: Help Mac find the right libalut.0.dylib. --- linden/indra/cmake/OPENAL.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/OPENAL.cmake b/linden/indra/cmake/OPENAL.cmake index f06a38e..908021c 100644 --- a/linden/indra/cmake/OPENAL.cmake +++ b/linden/indra/cmake/OPENAL.cmake @@ -1,5 +1,8 @@ # -*- cmake -*- +include(Variables) +include(Linking) + set(OPENAL ON CACHE BOOL "Enable OpenAL") @@ -54,7 +57,13 @@ if (OPENAL) NAMES alut freealut PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release ) - else (WINDOWS) + elseif (DARWIN) + find_library( ALUT_LIB + NAMES alut.0 + PATHS ${ARCH_PREBUILT_DIRS_RELEASE} + NO_DEFAULT_PATH + ) + else (WINDOWS) set(ALUT_LIB alut) endif (WINDOWS) -- cgit v1.1 From cee49f5508ad70cc12a375305a2a355325a7c437 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 10 Apr 2009 21:19:43 -0500 Subject: Added libneon to Mac manifest. --- linden/indra/newview/viewer_manifest.py | 1 + 1 file changed, 1 insertion(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 29c8880..7e9b82f 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -440,6 +440,7 @@ class DarwinManifest(ViewerManifest): self.path("libxml2.2.dylib") self.path("libintl.3.dylib") self.path("libjpeg.62.dylib") + self.path("libneon.27.dylib") self.path("libogg.0.dylib") self.path("liboil-0.3.0.dylib") self.path("libtheora.0.dylib") -- cgit v1.1 From 93df1af5901576eb16bd6bc4c74100d16ed32870 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sat, 18 Apr 2009 02:00:26 -0500 Subject: Removed some useless code from LLMediaImplGStreamer::startPlay(). --- linden/indra/llmedia/llmediaimplgstreamer.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp index 7eb2b7b..5cf7eed 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp @@ -813,9 +813,6 @@ bool LLMediaImplGStreamer::play() void LLMediaImplGStreamer::startPlay() { - GstElement *pipeline = (GstElement *)gst_object_ref(GST_OBJECT(mPlaybin)); - gst_object_unref(pipeline); - GstStateChangeReturn state_change; state_change = gst_element_set_state(mPlaybin, GST_STATE_PLAYING); -- cgit v1.1 From a6c1d49480c27b24ecb0e7778dd44782c5fe20b1 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sat, 18 Apr 2009 02:56:02 -0500 Subject: LLMediaImplGStreamer::play() is no-op if already playing. --- linden/indra/llmedia/llmediaimplgstreamer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp index 5cf7eed..3fd6d6e 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp @@ -792,6 +792,13 @@ bool LLMediaImplGStreamer::play() if (!mPlaybin || mState == GST_STATE_NULL) return true; + + if( getState() == GST_STATE_PLAYING ) + { + LL_DEBUGS("MediaImpl") << "... but already playing." << LL_ENDL; + return true; + } + // Clean up the existing thread, if any. if( mPlayThread != NULL && mPlayThread->isStopped()) { -- cgit v1.1 From a84bece4c4ba0a70d469be21cfbfe230f504f801 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sat, 18 Apr 2009 02:56:52 -0500 Subject: Removed redundant play() from LLMediaImplGStreamer::navigateTo(). --- linden/indra/llmedia/llmediaimplgstreamer.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp index 3fd6d6e..885ba7f 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp @@ -591,9 +591,6 @@ bool LLMediaImplGStreamer::navigateTo (const std::string urlIn) mState = GST_STATE_READY; - // navigateTo implicitly plays, too. - play(); - return true; } -- cgit v1.1 From 0c2b0d0767c48aa3cb02d378c7ff021f66284c40 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sat, 18 Apr 2009 03:20:54 -0500 Subject: LLMediaImplGStreamer::startPlay() is protected, LLGstPlayThread friend. --- linden/indra/llmedia/llmediaimplgstreamer.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llmedia/llmediaimplgstreamer.h b/linden/indra/llmedia/llmediaimplgstreamer.h index 32e6bd1..4145f33 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.h +++ b/linden/indra/llmedia/llmediaimplgstreamer.h @@ -57,6 +57,8 @@ class LLMediaImplMaker; class LLMediaImplGStreamer: public LLMediaImplCommon { + friend class LLGstPlayThread; + public: LLMediaImplGStreamer (); virtual ~LLMediaImplGStreamer (); @@ -97,10 +99,12 @@ class LLMediaImplGStreamer: /* virtual */ bool seek( double time ); /* virtual */ bool setVolume( float volume ); - void startPlay(); + LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;}; + protected: + + void startPlay(); - LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;}; private: -- cgit v1.1 From e22a9a793e76459a72afb45e822624d251ff5a50 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sat, 18 Apr 2009 03:32:05 -0500 Subject: Cleaned up indentation in llmediaimplgstreamer.h. --- linden/indra/llmedia/llmediaimplgstreamer.h | 48 ++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llmedia/llmediaimplgstreamer.h b/linden/indra/llmedia/llmediaimplgstreamer.h index 4145f33..d1566e3 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.h +++ b/linden/indra/llmedia/llmediaimplgstreamer.h @@ -97,9 +97,9 @@ class LLMediaImplGStreamer: /* virtual */ int getTextureFormatType() const; /* virtual */ int getTextureFormatInternal() const; /* virtual */ bool seek( double time ); - /* virtual */ bool setVolume( float volume ); + /* virtual */ bool setVolume( float volume ); - LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;}; + LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;}; protected: @@ -108,24 +108,24 @@ class LLMediaImplGStreamer: private: - // misc - bool unload(); - bool pause(); - bool stop(); - bool play(); - - static gboolean bus_callback (GstBus *bus, - GstMessage *message, - gpointer data); - unsigned char* mediaData; - int mMediaRowbytes; + // misc + bool unload(); + bool pause(); + bool stop(); + bool play(); + + static gboolean bus_callback (GstBus *bus, + GstMessage *message, + gpointer data); - int mTextureFormatPrimary; - int mTextureFormatType; + unsigned char* mediaData; + int mMediaRowbytes; + int mTextureFormatPrimary; + int mTextureFormatType; - // GStreamer-specific - GMainLoop *mPump; // event pump for this media - GstElement *mPlaybin; + // GStreamer-specific + GMainLoop *mPump; // event pump for this media + GstElement *mPlaybin; GstSLVideo *mVideoSink; GstState mState; GstState getState() const { return mState; } @@ -135,12 +135,12 @@ class LLMediaImplGStreamer: class LLMediaImplGStreamerMaker : public LLMediaImplMaker { -public: - LLMediaImplGStreamerMaker(); - LLMediaImplGStreamer* create() - { - return new LLMediaImplGStreamer(); - } + public: + LLMediaImplGStreamerMaker(); + LLMediaImplGStreamer* create() + { + return new LLMediaImplGStreamer(); + } }; ///////////////////////////////////////////////////////////////////////// -- cgit v1.1 From 640cd96159d0d3329a926954cffc4d8b09a06002 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 20 Apr 2009 22:29:46 -0500 Subject: Help (force) Mac to use the right OpenAL lib and header dir. --- linden/indra/cmake/OPENAL.cmake | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/OPENAL.cmake b/linden/indra/cmake/OPENAL.cmake index 908021c..94fa75d 100644 --- a/linden/indra/cmake/OPENAL.cmake +++ b/linden/indra/cmake/OPENAL.cmake @@ -20,8 +20,9 @@ if (OPENAL) elseif (DARWIN) # Look for for system's OpenAL.framework find_library(OPENAL_LIB - NAMES OpenAL openal + NAMES openal.1 PATHS ${ARCH_PREBUILT_DIRS_RELEASE} + NO_DEFAULT_PATH ) else (WINDOWS) set(OPENAL_LIB openal) @@ -37,10 +38,14 @@ if (OPENAL) # OPENAL_INCLUDE_DIR - find_path(OPENAL_INCLUDE_DIR - NAMES al.h - PATHS ${LIBS_PREBUILT_DIR}/include/AL - ) + if (DARWIN) + set(OPENAL_INCLUDE_DIR "${LIBS_PREBUILT_DIR}/include/AL") + else (DARWIN) + find_path(OPENAL_INCLUDE_DIR + NAMES al.h + PATHS ${LIBS_PREBUILT_DIR}/include/AL + ) + endif (DARWIN) if (NOT OPENAL_INCLUDE_DIR) message(FATAL_ERROR "al.h not found!") -- cgit v1.1 From 12cef93d626369a363e179c8d030f2c1e5a4e462 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 20 Apr 2009 22:38:45 -0500 Subject: We'll use libopenal.1.dylib after all (yet again). --- linden/indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 7e9b82f..9aeb31e 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -410,7 +410,7 @@ class DarwinManifest(ViewerManifest): self.path("libndofdev.dylib") - # self.path("libopenal.1.dylib") + self.path("libopenal.1.dylib") self.path("libalut.0.dylib") self.path("libglib-2.0.dylib") -- cgit v1.1 From f9cd5b9fbb2b1bee0243e5d9c3dc4cede8549828 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 20 Apr 2009 23:00:29 -0500 Subject: Imported GreenLife Emerald Viewer's OpenAL code. It works! --- linden/indra/llaudio/audioengine_openal.cpp | 138 ++++++++++++++++------------ linden/indra/llaudio/audioengine_openal.h | 10 +- 2 files changed, 87 insertions(+), 61 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llaudio/audioengine_openal.cpp b/linden/indra/llaudio/audioengine_openal.cpp index 6d9a242..a14b725 100644 --- a/linden/indra/llaudio/audioengine_openal.cpp +++ b/linden/indra/llaudio/audioengine_openal.cpp @@ -5,7 +5,7 @@ * * $LicenseInfo:firstyear=2002&license=viewergpl$ * - * Copyright (c) 2002-2008, Linden Research, Inc. + * Copyright (c) 2002-2009, Linden Research, Inc. * * Second Life Viewer Source Code * The source code in this file ("Source Code") is provided by Linden Lab @@ -36,6 +36,7 @@ #include "audioengine_openal.h" #include "listener_openal.h" + LLAudioEngine_OpenAL::LLAudioEngine_OpenAL() : mWindGen(NULL), @@ -53,41 +54,67 @@ LLAudioEngine_OpenAL::~LLAudioEngine_OpenAL() { } +static ALboolean alutInitHelp(const char **errorstring) +{ + ALboolean result = AL_FALSE; + ALenum err = AL_NO_ERROR; +#if LL_WINDOWS + __try { + result = alutInit(NULL, NULL); + err = alutGetError(); + alGetError(); // hit loading of wrap_oal.dll + if(!result) *errorstring = alutGetErrorString(err); + } __except( EXCEPTION_EXECUTE_HANDLER ) { + *errorstring = "[Exception]"; + result = AL_FALSE; + } + return result; +#else + result = alutInit(NULL, NULL); + if(!result) { + err = alutGetError(); + *errorstring = alutGetErrorString(err); + } + return result; +#endif +} + // virtual bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata) { + const char *errorstring = "(null)"; mWindGen = NULL; LLAudioEngine::init(num_channels, userdata); - if(!alutInit(NULL, NULL)) + if(!alutInitHelp(&errorstring)) { - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::init() ALUT initialization failed: " << alutGetErrorString (alutGetError ()) << LL_ENDL; + llwarns << "LLAudioEngine_OpenAL::init() ALUT initialization failed: " << errorstring << llendl; return false; } - LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::init() OpenAL successfully initialized" << LL_ENDL; + llinfos << "LLAudioEngine_OpenAL::init() OpenAL successfully initialized" << llendl; - LL_INFOS("OpenAL") << "OpenAL version: " - << ll_safe_string(alGetString(AL_VERSION)) << LL_ENDL; - LL_INFOS("OpenAL") << "OpenAL vendor: " - << ll_safe_string(alGetString(AL_VENDOR)) << LL_ENDL; - LL_INFOS("OpenAL") << "OpenAL renderer: " - << ll_safe_string(alGetString(AL_RENDERER)) << LL_ENDL; + llinfos << "OpenAL version: " + << ll_safe_string(alGetString(AL_VERSION)) << llendl; + llinfos << "OpenAL vendor: " + << ll_safe_string(alGetString(AL_VENDOR)) << llendl; + llinfos << "OpenAL renderer: " + << ll_safe_string(alGetString(AL_RENDERER)) << llendl; ALint major = alutGetMajorVersion (); ALint minor = alutGetMinorVersion (); - LL_INFOS("OpenAL") << "ALUT version: " << major << "." << minor << LL_ENDL; + llinfos << "ALUT version: " << major << "." << minor << llendl; ALCdevice *device = alcGetContextsDevice(alcGetCurrentContext()); alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, &major); alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, &minor); - LL_INFOS("OpenAL") << "ALC version: " << major << "." << minor << LL_ENDL; + llinfos << "ALC version: " << major << "." << minor << llendl; - LL_INFOS("OpenAL") << "ALC default device: " + llinfos << "ALC default device: " << ll_safe_string(alcGetString(device, ALC_DEFAULT_DEVICE_SPECIFIER)) - << LL_ENDL; + << llendl; return true; } @@ -127,24 +154,24 @@ void LLAudioEngine_OpenAL::allocateListener() mListenerp = (LLListener *) new LLListener_OpenAL(); if(!mListenerp) { - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::allocateListener() Listener creation failed" << LL_ENDL; + llwarns << "LLAudioEngine_OpenAL::allocateListener() Listener creation failed" << llendl; } } // virtual void LLAudioEngine_OpenAL::shutdown() { - LL_INFOS("OpenAL") << "About to LLAudioEngine::shutdown()" << LL_ENDL; + llinfos << "About to LLAudioEngine::shutdown()" << llendl; LLAudioEngine::shutdown(); - LL_INFOS("OpenAL") << "About to alutExit()" << LL_ENDL; + llinfos << "About to alutExit()" << llendl; if(!alutExit()) { - LL_WARNS("OpenAL") << "Nuts." << LL_ENDL; - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::shutdown() ALUT shutdown failed: " << alutGetErrorString (alutGetError ()) << LL_ENDL; + llwarns << "Nuts." << llendl; + llwarns << "LLAudioEngine_OpenAL::shutdown() ALUT shutdown failed: " << alutGetErrorString (alutGetError ()) << llendl; } - LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::shutdown() OpenAL successfully shut down" << LL_ENDL; + llinfos << "LLAudioEngine_OpenAL::shutdown() OpenAL successfully shut down" << llendl; delete mListenerp; mListenerp = NULL; @@ -162,7 +189,7 @@ LLAudioChannel *LLAudioEngine_OpenAL::createChannel() void LLAudioEngine_OpenAL::setInternalGain(F32 gain) { - //LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::setInternalGain() Gain: " << gain << LL_ENDL; + //llinfos << "LLAudioEngine_OpenAL::setInternalGain() Gain: " << gain << llendl; alListenerf(AL_GAIN, gain); } @@ -172,17 +199,6 @@ LLAudioChannelOpenAL::LLAudioChannelOpenAL() mLastSamplePos(0) { alGenSources(1, &mALSource); - - if( mALSource == AL_NONE ) - { - ALenum error = alGetError(); - if( error == AL_NO_ERROR ) - { - LL_WARNS("OpenAL") << "LLAudioChannelOpenAL::LLAudioChannelOpenAL() Could not generate mALSource, but no error is indicated!" << LL_ENDL; - } - LL_WARNS("OpenAL") << "LLAudioChannelOpenAL::LLAudioChannelOpenAL() Could not generate mALSource: (" << error << ") " << alGetString( error ) << LL_ENDL; - } - } LLAudioChannelOpenAL::~LLAudioChannelOpenAL() @@ -201,7 +217,7 @@ void LLAudioChannelOpenAL::play() { if (mALSource == AL_NONE) { - LL_WARNS("OpenAL") << "Playing without a mALSource, aborting" << LL_ENDL; + llwarns << "Playing without a mALSource, aborting" << llendl; return; } @@ -226,8 +242,8 @@ void LLAudioChannelOpenAL::playSynced(LLAudioChannel *channelp) alGetSourcef(masterchannelp->mALSource, AL_SEC_OFFSET, &master_offset); - LL_INFOS("OpenAL") << "Syncing with master at " << master_offset - << "sec" << LL_ENDL; + llinfos << "Syncing with master at " << master_offset + << "sec" << llendl; // *TODO: detect when this fails, maybe use AL_SAMPLE_ alSourcef(mALSource, AL_SEC_OFFSET, master_offset); } @@ -309,14 +325,12 @@ void LLAudioChannelOpenAL::update3DPosition() { alSource3f(mALSource, AL_POSITION, 0.0, 0.0, 0.0); alSource3f(mALSource, AL_VELOCITY, 0.0, 0.0, 0.0); - //alSource3f(mALSource, AL_DIRECTION, 0.0, 0.0, 0.0); alSourcei (mALSource, AL_SOURCE_RELATIVE, AL_TRUE); } else { LLVector3 float_pos; float_pos.setVec(mCurrentSourcep->getPositionGlobal()); alSourcefv(mALSource, AL_POSITION, float_pos.mV); alSourcefv(mALSource, AL_VELOCITY, mCurrentSourcep->getVelocity().mV); - //alSource3f(mALSource, AL_DIRECTION, 0.0, 0.0, 0.0); alSourcei (mALSource, AL_SOURCE_RELATIVE, AL_FALSE); } @@ -351,18 +365,18 @@ bool LLAudioBufferOpenAL::loadWAV(const std::string& filename) ALenum error = alutGetError(); if (gDirUtilp->fileExists(filename)) { - LL_WARNS("OpenAL") << + llwarns << "LLAudioBufferOpenAL::loadWAV() Error loading " << filename - << " " << alutGetErrorString(error) << LL_ENDL; + << " " << alutGetErrorString(error) << llendl; } else { // It's common for the file to not actually exist. - //LL_DEBUGS("OpenAL") << - // "LLAudioBufferOpenAL::loadWAV() Error loading " - // << filename - // << " " << alutGetErrorString(error) << LL_ENDL; + lldebugs << + "LLAudioBufferOpenAL::loadWAV() Error loading " + << filename + << " " << alutGetErrorString(error) << llendl; } return false; } @@ -378,7 +392,7 @@ U32 LLAudioBufferOpenAL::getLength() } ALint length; alGetBufferi(mALBuffer, AL_SIZE, &length); - return length >> 2; + return length / 2; // convert size in bytes to size in (16-bit) samples } // ------------ @@ -386,7 +400,7 @@ U32 LLAudioBufferOpenAL::getLength() void LLAudioEngine_OpenAL::initWind() { ALenum error; - LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::initWind() start" << LL_ENDL; + llinfos << "LLAudioEngine_OpenAL::initWind() start" << llendl; mNumEmptyWindALBuffers = MAX_NUM_WIND_BUFFERS; @@ -396,11 +410,10 @@ void LLAudioEngine_OpenAL::initWind() if((error=alGetError()) != AL_NO_ERROR) { - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::initWind() Error creating wind sources: "<; - const float WIND_BUFFER_SIZE_SEC = 0.05f; // 1/20th sec mWindBufFreq = mWindGen->getInputSamplingRate(); mWindBufSamples = llceil(mWindBufFreq * WIND_BUFFER_SIZE_SEC); @@ -410,22 +423,22 @@ void LLAudioEngine_OpenAL::initWind() if(mWindBuf==NULL) { - LL_ERRS("OpenAL") << "LLAudioEngine_OpenAL::initWind() Error creating wind memory buffer" << LL_ENDL; + llerrs << "LLAudioEngine_OpenAL::initWind() Error creating wind memory buffer" << llendl; mEnableWind=false; } - LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::initWind() done" << LL_ENDL; + llinfos << "LLAudioEngine_OpenAL::initWind() done" << llendl; } void LLAudioEngine_OpenAL::cleanupWind() { - LL_INFOS("OpenAL") << "LLAudioEngine_OpenAL::cleanupWind()" << LL_ENDL; + llinfos << "LLAudioEngine_OpenAL::cleanupWind()" << llendl; if (mWindSource != AL_NONE) { // detach and delete all outstanding buffers on the wind source alSourceStop(mWindSource); - int processed; + ALint processed; alGetSourcei(mWindSource, AL_BUFFERS_PROCESSED, &processed); while (processed--) { @@ -485,7 +498,7 @@ void LLAudioEngine_OpenAL::updateWind(LLVector3 wind_vec, F32 camera_altitude) // ok lets make a wind buffer now - int processed, queued, unprocessed; + ALint processed, queued, unprocessed; alGetSourcei(mWindSource, AL_BUFFERS_PROCESSED, &processed); alGetSourcei(mWindSource, AL_BUFFERS_QUEUED, &queued); unprocessed = queued - processed; @@ -495,18 +508,18 @@ void LLAudioEngine_OpenAL::updateWind(LLVector3 wind_vec, F32 camera_altitude) mNumEmptyWindALBuffers = llmin(mNumEmptyWindALBuffers + processed * 3 - unprocessed, MAX_NUM_WIND_BUFFERS-unprocessed); mNumEmptyWindALBuffers = llmax(mNumEmptyWindALBuffers, 0); - //LL_INFOS("OpenAL") << "mNumEmptyWindALBuffers: " << mNumEmptyWindALBuffers <<" (" << unprocessed << ":" << processed << ")" << LL_ENDL; + //llinfos << "mNumEmptyWindALBuffers: " << mNumEmptyWindALBuffers <<" (" << unprocessed << ":" << processed << ")" << llendl; while(processed--) // unqueue old buffers { ALuint buffer; - int error; + ALenum error; alGetError(); /* clear error */ alSourceUnqueueBuffers(mWindSource, 1, &buffer); error = alGetError(); if(error != AL_NO_ERROR) { - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::updateWind() error swapping (unqueuing) buffers" << LL_ENDL; + llwarns << "LLAudioEngine_OpenAL::updateWind() error swapping (unqueuing) buffers" << llendl; } else { @@ -522,7 +535,7 @@ void LLAudioEngine_OpenAL::updateWind(LLVector3 wind_vec, F32 camera_altitude) alGenBuffers(1,&buffer); if((error=alGetError()) != AL_NO_ERROR) { - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::initWind() Error creating wind buffer: " << error << LL_ENDL; + llwarns << "LLAudioEngine_OpenAL::initWind() Error creating wind buffer: " << error << llendl; break; } @@ -534,22 +547,27 @@ void LLAudioEngine_OpenAL::updateWind(LLVector3 wind_vec, F32 camera_altitude) mWindBufFreq); error = alGetError(); if(error != AL_NO_ERROR) - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::updateWind() error swapping (bufferdata) buffers" << LL_ENDL; + { + llwarns << "LLAudioEngine_OpenAL::updateWind() error swapping (bufferdata) buffers" << llendl; + } alSourceQueueBuffers(mWindSource, 1, &buffer); error = alGetError(); if(error != AL_NO_ERROR) - LL_WARNS("OpenAL") << "LLAudioEngine_OpenAL::updateWind() error swapping (queuing) buffers" << LL_ENDL; + { + llwarns << "LLAudioEngine_OpenAL::updateWind() error swapping (queuing) buffers" << llendl; + } --mNumEmptyWindALBuffers; } - int playing; + ALint playing; alGetSourcei(mWindSource, AL_SOURCE_STATE, &playing); if(playing != AL_PLAYING) { alSourcePlay(mWindSource); - LL_INFOS("OpenAL") << "Wind had stopped - probably ran out of buffers - restarting: " << (unprocessed+mNumEmptyWindALBuffers) << " now queued." << LL_ENDL; + lldebugs << "Wind had stopped - probably ran out of buffers - restarting: " << (unprocessed+mNumEmptyWindALBuffers) << " now queued." << llendl; } } + diff --git a/linden/indra/llaudio/audioengine_openal.h b/linden/indra/llaudio/audioengine_openal.h index 1f6dee4..70de9d4 100644 --- a/linden/indra/llaudio/audioengine_openal.h +++ b/linden/indra/llaudio/audioengine_openal.h @@ -6,7 +6,7 @@ * * $LicenseInfo:firstyear=2002&license=viewergpl$ * - * Copyright (c) 2002-2008, Linden Research, Inc. + * Copyright (c) 2002-2009, Linden Research, Inc. * * Second Life Viewer Source Code * The source code in this file ("Source Code") is provided by Linden Lab @@ -39,6 +39,11 @@ #include "listener_openal.h" #include "windgen.h" +#if 1 +#define WIND_BUFFER_SIZE_SEC 0.05f +#endif + + class LLAudioEngine_OpenAL : public LLAudioEngine { public: @@ -72,6 +77,9 @@ class LLAudioEngine_OpenAL : public LLAudioEngine int mNumEmptyWindALBuffers; static const int MAX_NUM_WIND_BUFFERS = 80; +#if 0 + static const float WIND_BUFFER_SIZE_SEC = 0.05f; // 1/20th sec +#endif }; class LLAudioChannelOpenAL : public LLAudioChannel -- cgit v1.1 From d4c691572240e1f6fa6c7049c35e396ef269d8f7 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sat, 16 May 2009 02:24:05 -0500 Subject: Reverted Ctrl-D shortcut back to Edit > Duplicate. No longer World > Create Landmark Here. --- linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 4758116..086f059 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -127,7 +127,7 @@ + label="Duplicate" shortcut="control|D"> @@ -487,8 +487,7 @@ - + -- cgit v1.1 From 2fbeca2087ea0174cd6e17aa0fd6c1ac13f36bb7 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sun, 24 May 2009 21:32:44 -0500 Subject: Fixed end-of-line style for Info-Imprudence.plist. --- linden/indra/newview/Info-Imprudence.plist | 78 +++++++++++++++--------------- 1 file changed, 39 insertions(+), 39 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/Info-Imprudence.plist b/linden/indra/newview/Info-Imprudence.plist index 357d171..49aa2a7 100644 --- a/linden/indra/newview/Info-Imprudence.plist +++ b/linden/indra/newview/Info-Imprudence.plist @@ -1,39 +1,39 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - Imprudence - CFBundleIconFile - viewer.icns - CFBundleIdentifier - com.secondlife.indra.viewer - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Imprudence - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleURLName - Second Life URL - CFBundleURLSchemes - - secondlife - - LSIsAppleDefaultForScheme - - - - CFBundleVersion - 1.0.0 - CSResourcesFileMapped - - - + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Imprudence + CFBundleIconFile + viewer.icns + CFBundleIdentifier + com.secondlife.indra.viewer + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Imprudence + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + Second Life URL + CFBundleURLSchemes + + secondlife + + LSIsAppleDefaultForScheme + + + + CFBundleVersion + 1.0.0 + CSResourcesFileMapped + + + -- cgit v1.1 From 3c1d730a3fc44a99b11de829c817fe078c6f2575 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sun, 24 May 2009 21:43:26 -0500 Subject: Added ConfirmTeleportHome alert text. --- linden/indra/newview/skins/default/xui/en-us/alerts.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml index 92e2014..44c1730 100644 --- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml @@ -5060,5 +5060,21 @@ Would you like to visit the Second Life website to set this up? The string [STRING_NAME] is missing from strings.xml + + + + Are you sure you want to teleport home? + + + When teleporting home + + + + + -- cgit v1.1 From 032d19bdea92fbc4d584fb630a37ceccb07a5a40 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sun, 24 May 2009 21:52:44 -0500 Subject: Moved LLAgent::teleportHome() definition. Was in llagent.h for no good reason, now in llagent.cpp. --- linden/indra/newview/llagent.cpp | 7 +++++++ linden/indra/newview/llagent.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index d268397..7f6cd0c 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp @@ -5926,6 +5926,13 @@ void LLAgent::teleportViaLocation(const LLVector3d& pos_global) } } + +void LLAgent::teleportHome() +{ + teleportViaLandmark(LLUUID::null); +} + + void LLAgent::setTeleportState(ETeleportState state) { mTeleportState = state; diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h index 97f9aed..bc06e92 100644 --- a/linden/indra/newview/llagent.h +++ b/linden/indra/newview/llagent.h @@ -462,7 +462,7 @@ public: void teleportViaLandmark(const LLUUID& landmark_id); // go home - void teleportHome() { teleportViaLandmark(LLUUID::null); } + void teleportHome(); // to an invited location void teleportViaLure(const LLUUID& lure_id, BOOL godlike); -- cgit v1.1 From f8b927f29f4adbee50ead87d26a9f0531231e540 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sun, 24 May 2009 22:32:56 -0500 Subject: Added Teleport Home confirmation and callback methods. LLAgent::teleportHomeConfirm() LLAgent::teleportHomeCallback() --- linden/indra/newview/llagent.cpp | 15 +++++++++++++++ linden/indra/newview/llagent.h | 2 ++ 2 files changed, 17 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 7f6cd0c..46dc6f3 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp @@ -5932,6 +5932,21 @@ void LLAgent::teleportHome() teleportViaLandmark(LLUUID::null); } +void LLAgent::teleportHomeConfirm() +{ + gViewerWindow->alertXml("ConfirmTeleportHome", LLAgent::teleportHomeCallback, (void *)this); +} + +// static +void LLAgent::teleportHomeCallback(S32 option, void *userdata) +{ + if( option == 0 ) + { + // They confirmed it. Here we go! + ((LLAgent *) userdata)->teleportHome(); + } +} + void LLAgent::setTeleportState(ETeleportState state) { diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h index bc06e92..dd204af 100644 --- a/linden/indra/newview/llagent.h +++ b/linden/indra/newview/llagent.h @@ -463,6 +463,8 @@ public: // go home void teleportHome(); + void teleportHomeConfirm(); + static void teleportHomeCallback(S32 option, void *userdata); // to an invited location void teleportViaLure(const LLUUID& lure_id, BOOL godlike); -- cgit v1.1 From 2099a7a2287be16d861962fb19bf48a38f8d923c Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 18:21:46 -0500 Subject: User-initiated Teleport Home has confirmation dialog. That's in the World menu and on the world map. --- linden/indra/newview/llfloaterworldmap.cpp | 3 +-- linden/indra/newview/llviewermenu.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llfloaterworldmap.cpp b/linden/indra/newview/llfloaterworldmap.cpp index 8396454..66b2813 100644 --- a/linden/indra/newview/llfloaterworldmap.cpp +++ b/linden/indra/newview/llfloaterworldmap.cpp @@ -1052,8 +1052,7 @@ void LLFloaterWorldMap::onPanBtn( void* userdata ) // static void LLFloaterWorldMap::onGoHome(void*) { - gAgent.teleportHome(); - gFloaterWorldMap->close(); + gAgent.teleportHomeConfirm(); } diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 486e4f1..37f9ad2 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -4686,7 +4686,7 @@ class LLWorldTeleportHome : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - gAgent.teleportHome(); + gAgent.teleportHomeConfirm(); return true; } }; -- cgit v1.1 From f32602bfe06c0888388cab2752094880e3eb4c71 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 00:02:38 -0500 Subject: Added ConfirmToggleFullscreen alert text. --- linden/indra/newview/skins/default/xui/en-us/alerts.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml index 44c1730..38af764 100644 --- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml @@ -5076,5 +5076,20 @@ Would you like to visit the Second Life website to set this up? + + + Are you sure you want to toggle fullscreen mode? + + + When toggling fullscreen mode + + + + + -- cgit v1.1 From 544078d40e9affba321ef5e2d5ad665656462262 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 04:16:10 -0500 Subject: Added Toggle Fullscreen confirmation and callback methods. LLViewerWindow::toggleFullscreenConfirm() LLViewerWindow::toggleFullscreenCallback() --- linden/indra/newview/llviewerwindow.cpp | 21 +++++++++++++++++++++ linden/indra/newview/llviewerwindow.h | 2 ++ 2 files changed, 23 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index 854d757..0c43b59 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp @@ -4612,6 +4612,27 @@ void LLViewerWindow::initFonts(F32 zoom_factor) gDirUtilp->getAppRODataDir() ); } + + +void LLViewerWindow::toggleFullscreenConfirm() +{ + gViewerWindow->alertXml("ConfirmToggleFullscreen", + LLViewerWindow::toggleFullscreenCallback, + (void *)this); +} + + +// static +void LLViewerWindow::toggleFullscreenCallback(S32 option, void *userdata) +{ + if( option == 0 ) + { + // User confirmed it. Here we go! + ((LLViewerWindow *)userdata)->toggleFullscreen( TRUE ); + } +} + + void LLViewerWindow::toggleFullscreen(BOOL show_progress) { if (mWindow) diff --git a/linden/indra/newview/llviewerwindow.h b/linden/indra/newview/llviewerwindow.h index 21df0d5..d562d0f 100644 --- a/linden/indra/newview/llviewerwindow.h +++ b/linden/indra/newview/llviewerwindow.h @@ -338,6 +338,8 @@ public: // Request display setting changes void toggleFullscreen(BOOL show_progress); + void toggleFullscreenConfirm(); + static void toggleFullscreenCallback(S32 option, void *userdata); // handle shutting down GL and bringing it back up BOOL checkSettings(); -- cgit v1.1 From 67fc978ab935c861cd03659d248b7fc7a7b5369d Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 17:13:03 -0500 Subject: User-initiated Toggle Fullscreen has a confirmation dialog now. That's in the View menu and also Alt+Enter at login screen. --- linden/indra/newview/llpanellogin.cpp | 2 +- linden/indra/newview/llviewermenu.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index aeb3b2d..7f654bb 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp @@ -538,7 +538,7 @@ BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask) { if (( KEY_RETURN == key ) && (MASK_ALT == mask)) { - gViewerWindow->toggleFullscreen(FALSE); + gViewerWindow->toggleFullscreenConfirm(); return TRUE; } diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 37f9ad2..4194ff7 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -3262,7 +3262,7 @@ class LLViewFullscreen : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - gViewerWindow->toggleFullscreen(TRUE); + gViewerWindow->toggleFullscreenConfirm(); return true; } }; -- cgit v1.1 From 81c6e475bc4e33a0a4fcb265c05f673e07a8c31d Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 21:02:41 -0500 Subject: Added ConfirmRestoreToWorld alert text. --- .../newview/skins/default/xui/en-us/alerts.xml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml index 38af764..6bfefdb 100644 --- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml @@ -5091,5 +5091,29 @@ Would you like to visit the Second Life website to set this up? + + + Are you sure you want to restore the object to its last position? + +WARNING: Don't restore if you aren't sure where the object will go! + + + When restoring objects to their last positions + + + + + + http://imprudenceviewer.org/wiki/Restore_to_Last_Position + + + + -- cgit v1.1 From b8f111aef0f5e3135b7da2990002ca6306473981 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 21:38:18 -0500 Subject: Added Restore to Last Position confirmation and callback methods. LLItemBridge::restoreToWorldConfirm() LLItemBridge::restoreToWorldCallback() --- linden/indra/newview/llinventorybridge.cpp | 18 ++++++++++++++++++ linden/indra/newview/llinventorybridge.h | 4 ++++ 2 files changed, 22 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 34277f7..65922cc 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp @@ -816,6 +816,24 @@ void LLItemBridge::restoreItem() } } + +// virtual +void LLItemBridge::restoreToWorldConfirm() +{ + gViewerWindow->alertXml("ConfirmRestoreToWorld", LLItemBridge::restoreToWorldCallback, (void *)this); +} + +// static +void LLItemBridge::restoreToWorldCallback(S32 option, void *userdata) +{ + if( option == 0 ) + { + // They confirmed it. Here we go! + ((LLItemBridge *) userdata)->restoreToWorld(); + } +} + +// virtual void LLItemBridge::restoreToWorld() { LLViewerInventoryItem* itemp = (LLViewerInventoryItem*)getItem(); diff --git a/linden/indra/newview/llinventorybridge.h b/linden/indra/newview/llinventorybridge.h index eb17432..a4f59fe 100644 --- a/linden/indra/newview/llinventorybridge.h +++ b/linden/indra/newview/llinventorybridge.h @@ -244,7 +244,11 @@ public: virtual void selectItem(); virtual void restoreItem(); + virtual void restoreToWorld(); + virtual void restoreToWorldConfirm(); + static void restoreToWorldCallback(S32 option, void *userdata); + virtual LLUIImagePtr getIcon() const; virtual const std::string& getDisplayName() const; -- cgit v1.1 From 8d2b12f10225769f2a49226cd97db9b4865bd345 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 22:05:17 -0500 Subject: Restore to Last Position has a confirmation dialog now. --- linden/indra/newview/llinventorybridge.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 65922cc..9675165 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp @@ -758,7 +758,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, } else if ("restoreToWorld" == action) { - restoreToWorld(); + restoreToWorldConfirm(); } else if ("restore" == action) { -- cgit v1.1 From ef271368696c038755a20f3f75b6d91ef076dc25 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 25 May 2009 22:06:04 -0500 Subject: Added a separator between Wear and Restore to Last Position. --- linden/indra/newview/llinventorybridge.cpp | 1 + .../indra/newview/skins/default/xui/en-us/menu_inventory.xml | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 9675165..7af8c89 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp @@ -3439,6 +3439,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) items.push_back(std::string("Object Wear")); items.push_back(std::string("Attach To")); items.push_back(std::string("Attach To HUD")); + items.push_back(std::string("RestoreToWorld Separator")); items.push_back(std::string("Restore to Last Position")); LLMenuGL* attach_menu = menu.getChildMenuByName("Attach To", TRUE); diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml index aa61e77..ff3b8ce 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml @@ -218,15 +218,17 @@ name="Deactivate" width="128"> + + + + - - - -- cgit v1.1 From 2cc402c47a814d126f2643483e1812eb56d81f6f Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sun, 31 May 2009 22:16:58 -0500 Subject: Added a confirmation dialog for Take Off All Clothes. --- linden/indra/newview/llagent.cpp | 19 +++++++++++++++++++ linden/indra/newview/llagent.h | 8 ++++++-- linden/indra/newview/llviewermenu.cpp | 2 +- .../indra/newview/skins/default/xui/en-us/alerts.xml | 15 +++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 46dc6f3..8c4e8b3 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp @@ -7432,6 +7432,25 @@ void LLAgent::userRemoveWearable( void* userdata ) } } + +// static +void LLAgent::userRemoveAllClothesConfirm() +{ + gViewerWindow->alertXml("ConfirmRemoveAllClothes", + LLAgent::userRemoveAllClothesCallback, NULL); +} + +// static +void LLAgent::userRemoveAllClothesCallback(S32 option, void *userdata) +{ + if( option == 0 ) + { + // They confirmed it. Here we go! + LLAgent::userRemoveAllClothes(NULL); + } +} + + void LLAgent::userRemoveAllClothes( void* userdata ) { // We have to do this up front to avoid having to deal with the case of multiple wearables being dirty. diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h index dd204af..4d24aee 100644 --- a/linden/indra/newview/llagent.h +++ b/linden/indra/newview/llagent.h @@ -668,8 +668,12 @@ public: static void stopFidget(); static void processAgentInitialWearablesUpdate(LLMessageSystem* mesgsys, void** user_data); static void userRemoveWearable( void* userdata ); // userdata is EWearableType - static void userRemoveAllClothes( void* userdata ); // userdata is NULL - static void userRemoveAllClothesStep2(BOOL proceed, void* userdata ); // userdata is NULL + + static void userRemoveAllClothesConfirm(); + static void userRemoveAllClothesCallback(S32 option, void *userdata); + static void userRemoveAllClothes( void* userdata ); // userdata is NULL + static void userRemoveAllClothesStep2(BOOL proceed, void* userdata ); // userdata is NULL + static void userRemoveAllAttachments( void* userdata); // userdata is NULL static BOOL selfHasWearable( void* userdata ); // userdata is EWearableType diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 4194ff7..d477b0c 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -7352,7 +7352,7 @@ class LLEditTakeOff : public view_listener_t } else if (clothing == "all") { - LLAgent::userRemoveAllClothes(NULL); + LLAgent::userRemoveAllClothesConfirm(); } return true; } diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml index 6bfefdb..cb37663 100644 --- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml @@ -5115,5 +5115,20 @@ WARNING: Don't restore if you aren't sure where the object will go! + + + Are you sure you want to take off all clothes? + + + When taking off all clothes + + + + + -- cgit v1.1 From c3f2d6b01a3fb000f9d76de92e109c29efa75a6d Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Mon, 1 Jun 2009 00:27:32 -0500 Subject: Added confirmation dialogs for Mute from pie menu. Dialog is for muting avatars and objects from the pie menu only. --- linden/indra/newview/llmutelist.cpp | 38 ++++++++++++++++++++++ linden/indra/newview/llmutelist.h | 5 +++ linden/indra/newview/llviewermenu.cpp | 12 +++++-- .../newview/skins/default/xui/en-us/alerts.xml | 30 +++++++++++++++++ 4 files changed, 82 insertions(+), 3 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp index 0cdfe83..00ef9c3 100644 --- a/linden/indra/newview/llmutelist.cpp +++ b/linden/indra/newview/llmutelist.cpp @@ -64,6 +64,7 @@ #include "llworld.h" //for particle system banning #include "llchat.h" #include "llfloaterchat.h" +#include "llfloatermute.h" #include "llimpanel.h" #include "llimview.h" #include "llnotify.h" @@ -245,6 +246,43 @@ BOOL LLMuteList::isLinden(const std::string& name) const } +void LLMuteList::addMuteAgentConfirm( const LLMute &mute ) +{ + LLMute *newmute = new LLMute(mute); + + LLStringUtil::format_map_t args; + args["[NAME]"] = newmute->mName; + + gViewerWindow->alertXml("ConfirmMuteAgent", args, + LLMuteList::addMuteCallback, + static_cast(newmute)); +} + +void LLMuteList::addMuteObjectConfirm( const LLMute &mute ) +{ + LLMute *newmute = new LLMute(mute); + + LLStringUtil::format_map_t args; + args["[NAME]"] = newmute->mName; + + gViewerWindow->alertXml("ConfirmMuteObject", args, + LLMuteList::addMuteCallback, + static_cast(newmute)); +} + +// static +void LLMuteList::addMuteCallback(S32 option, void *userdata) +{ + LLMute *mute = static_cast(userdata); + if( option == 0 ) + { + // They confirmed it. Here we go! + LLMuteList::getInstance()->add( *mute ); + LLFloaterMute::showInstance(); + } + delete mute; +} + BOOL LLMuteList::add(const LLMute& mute, U32 flags) { // Can't mute text from Lindens diff --git a/linden/indra/newview/llmutelist.h b/linden/indra/newview/llmutelist.h index 400f13e..d66dd17 100644 --- a/linden/indra/newview/llmutelist.h +++ b/linden/indra/newview/llmutelist.h @@ -102,6 +102,11 @@ public: void addObserver(LLMuteListObserver* observer); void removeObserver(LLMuteListObserver* observer); + + void addMuteAgentConfirm( const LLMute &mute ); + void addMuteObjectConfirm( const LLMute &mute ); + static void addMuteCallback(S32 option, void *userdata); + // Add either a normal or a BY_NAME mute, for any or all properties. BOOL add(const LLMute& mute, U32 flags = 0); diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index d477b0c..4081e97 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -2087,10 +2087,16 @@ class LLObjectMute : public view_listener_t } else { - LLMuteList::getInstance()->add(mute); - LLFloaterMute::showInstance(); + if( LLMute::AGENT == type ) + { + LLMuteList::getInstance()->addMuteAgentConfirm(mute); + } + else + { + // must be an object. + LLMuteList::getInstance()->addMuteObjectConfirm(mute); + } } - return true; } }; diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml index cb37663..25d3a84 100644 --- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml @@ -5130,5 +5130,35 @@ WARNING: Don't restore if you aren't sure where the object will go! + + + Are you sure you want to mute [NAME] (resident)? + + + When muting a Resident + + + + + + + + Are you sure you want to mute [NAME] (object)? + + + When muting an object + + + + + -- cgit v1.1 From dfaef7389a40385eb83ca0c82c22f1f84082b4ab Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 5 Jun 2009 16:23:44 -0500 Subject: Mute in Profile window triggers confirmation dialog too. --- linden/indra/newview/llpanelavatar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp index 76dbd1f..82d9054 100644 --- a/linden/indra/newview/llpanelavatar.cpp +++ b/linden/indra/newview/llpanelavatar.cpp @@ -1590,16 +1590,16 @@ void LLPanelAvatar::onClickMute(void *userdata) if (name_edit) { std::string agent_name = name_edit->getText(); - LLFloaterMute::showInstance(); if (LLMuteList::getInstance()->isMuted(agent_id)) { LLFloaterMute::getInstance()->selectMute(agent_id); + LLFloaterMute::showInstance(); } else { LLMute mute(agent_id, agent_name, LLMute::AGENT); - LLMuteList::getInstance()->add(mute); + LLMuteList::getInstance()->addMuteAgentConfirm(mute); } } } -- cgit v1.1