aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.txt127
-rw-r--r--linden/indra/cmake/GStreamer.cmake42
-rw-r--r--linden/indra/cmake/LLMedia.cmake2
-rw-r--r--linden/indra/cmake/OPENAL.cmake36
-rw-r--r--linden/indra/cmake/QuickTime.cmake49
-rw-r--r--linden/indra/llaudio/CMakeLists.txt1
-rw-r--r--linden/indra/llaudio/audioengine_openal.cpp11
-rw-r--r--linden/indra/llcommon/llerror.cpp6
-rw-r--r--linden/indra/llcommon/llthread.cpp10
-rw-r--r--linden/indra/llcommon/llthread.h8
-rw-r--r--linden/indra/llmedia/CMakeLists.txt13
-rw-r--r--linden/indra/llmedia/llmediaimplgstreamer.cpp138
-rw-r--r--linden/indra/newview/CMakeLists.txt5
-rw-r--r--linden/indra/newview/Info-Imprudence.plist (renamed from linden/indra/newview/Info-SecondLife.plist)2
-rw-r--r--linden/indra/newview/app_settings/settings.xml2
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py114
16 files changed, 406 insertions, 160 deletions
diff --git a/ChangeLog.txt b/ChangeLog.txt
index f99ebae..6fd7771 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,19 @@
12009-04-06 Jacek Antonelli <jacek.antonelli@gmail.com>
2
3 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
4 Don't use LL_ERRS, it makes the viewer abort!
5
6
7 * linden/indra/llcommon/llerror.cpp:
8 Made LogLock mutex less likely to fail, hopefully.
9
10
11 * linden/indra/llcommon/llthread.cpp:
12 Converted BOOLs to bools in llthread.
13 * linden/indra/llcommon/llthread.h:
14 Ditto.
15
16
12009-04-05 Jacek Antonelli <jacek.antonelli@gmail.com> 172009-04-05 Jacek Antonelli <jacek.antonelli@gmail.com>
2 18
3 * linden/indra/llmedia/llmediaimplgstreamer.cpp: 19 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
@@ -63,12 +79,42 @@
63 Added LLMediaBase::EDebugLevel and setDebugLevel prototype. 79 Added LLMediaBase::EDebugLevel and setDebugLevel prototype.
64 80
65 81
822009-03-30 Jacek Antonelli <jacek.antonelli@gmail.com>
83
84 * linden/indra/newview/viewer_manifest.py:
85 Added libgstdecodebin.so plugin to Mac manifest.
86
87
662009-03-30 McCabe Maxsted <hakushakukun@gmail.com> 882009-03-30 McCabe Maxsted <hakushakukun@gmail.com>
67 89
68 * linden/indra/llmedia/llmediaimplgstreamer.cpp: 90 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
69 Cleaned up logic for bad streams. 91 Cleaned up logic for bad streams.
70 92
71 93
942009-03-29 Jacek Antonelli <jacek.antonelli@gmail.com>
95
96 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
97 set_gst_plugin_path now sets GST_PLUGIN_SYSTEM_PATH="".
98 This prevents GStreamer from looking for system-installed plugins,
99 which can have conflicts with our packaged ones.
100
101
102 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
103 Improved set_gst_plugin_path, now sets path on Mac too.
104
105
106 * linden/indra/cmake/GStreamer.cmake:
107 Using OpenAL framework on Mac after all. Maybe.
108
109
110 * linden/indra/cmake/GStreamer.cmake:
111 Tweaked the list of linked-in gstreamer libs for Mac.
112
113
114 * linden/indra/newview/viewer_manifest.py:
115 Removed the "2.0.0" named glib libs. Only using "2.0" now.
116
117
722009-03-29 McCabe Maxsted <hakushakukun@gmail.com> 1182009-03-29 McCabe Maxsted <hakushakukun@gmail.com>
73 119
74 * linden/indra/llmedia/llmediaimplgstreamer.cpp: 120 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
@@ -110,6 +156,12 @@
110 Print out the plugins gstreamer finds, for debugging. 156 Print out the plugins gstreamer finds, for debugging.
111 157
112 158
1592009-03-27 Jacek Antonelli <jacek.antonelli@gmail.com>
160
161 * linden/indra/newview/app_settings/settings.xml:
162 Changed the login splash screen URL.
163
164
1132009-03-27 McCabe Maxsted <hakushakukun@gmail.com> 1652009-03-27 McCabe Maxsted <hakushakukun@gmail.com>
114 166
115 * linden/indra/llmedia/llmediaimplgstreamer.cpp: 167 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
@@ -187,12 +239,86 @@
187 Ditto. 239 Ditto.
188 240
189 241
2422009-03-16 Jacek Antonelli <jacek.antonelli@gmail.com>
243
244 * linden/indra/newview/viewer_manifest.py:
245 Symlinks for Mac glib dylibs (2.0.0 -> 2.0).
246
247 * linden/indra/newview/viewer_manifest.py:
248 Added more Mac dylibs to manifest.
249
250
2512009-03-13 Jacek Antonelli <jacek.antonelli@gmail.com>
252
253 * linden/indra/llaudio/audioengine_openal.cpp:
254 Added error checking when generating an OpenAL source.
255
256
2572009-03-12 Jacek Antonelli <jacek.antonelli@gmail.com>
258
259 * linden/indra/cmake/OPENAL.cmake:
260 Don't find specific OpenAL lib locations on Mac/Linux.
261 Linking that way is bad. Just use -lopenal -lalut instead.
262
263
2642009-03-11 Jacek Antonelli <jacek.antonelli@gmail.com>
265
266 * linden/indra/cmake/OPENAL.cmake:
267 Removed redundant/unnecessary OpenAL lib names and paths.
268
269 * linden/indra/newview/viewer_manifest.py:
270 Added Mac gstreamer plugins to viewer manifest.
271
272 * linden/indra/llaudio/CMakeLists.txt:
273 LLAudio's CMakeLists should include OPENAL.
274
275 * linden/indra/cmake/LLMedia.cmake:
276 Removed Quicktime-related cmake code.
277 * linden/indra/cmake/LLMedia.cmake:
278 Ditto.
279 * linden/indra/llmedia/CMakeLists.txt:
280 Ditto.
281 * linden/indra/newview/CMakeLists.txt:
282 Ditto.
283
284
1902009-03-10 McCabe Maxsted <hakushakukun@gmail.com> 2852009-03-10 McCabe Maxsted <hakushakukun@gmail.com>
191 286
192 * linden/indra/llaudio/audioengine.cpp: 287 * linden/indra/llaudio/audioengine.cpp:
193 Changed startinternetstream() a bit to be clearer. 288 Changed startinternetstream() a bit to be clearer.
194 289
195 290
2912009-03-09 Jacek Antonelli <jacek.antonelli@gmail.com>
292
293 * linden/indra/newview/viewer_manifest.py:
294 Manifest includes openal and gstreamer libs in Mac package.
295
296 * linden/indra/newview/CMakeLists.txt:
297 Mac app icon will be called viewer.icns instead of secondlife.icns.
298 * linden/indra/newview/Info-Imprudence.plist:
299 Ditto.
300 * linden/indra/newview/viewer_manifest.py:
301 Ditto.
302
303
3042009-03-08 Jacek Antonelli <jacek.antonelli@gmail.com>
305
306 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
307 Load the proper gstreamer lib type (dylib) on Mac.
308
309
310 * linden/indra/cmake/GStreamer.cmake:
311 Tweaked GStreamer.cmake to work on Mac.
312
313
3142009-03-07 Jacek Antonelli <jacek.antonelli@gmail.com>
315
316 * linden/indra/newview/Info-SecondLife.plist:
317 Moved Info-SecondLife.plist to Info-Imprudence.plist.
318 * linden/indra/newview/viewer_manifest.py:
319 Ditto.
320
321
1962009-03-07 McCabe Maxsted <hakushakukun@gmail.com> 3222009-03-07 McCabe Maxsted <hakushakukun@gmail.com>
197 323
198 * linden/indra/llimagej2coj/llimagej2coj.cpp: 324 * linden/indra/llimagej2coj/llimagej2coj.cpp:
@@ -286,6 +412,7 @@
286 not highlighted in script editor). 412 not highlighted in script editor).
287 413
288 414
415
289=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 416=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
290=- 1.1.0 RC2 -= 417=- 1.1.0 RC2 -=
291=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 418=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
diff --git a/linden/indra/cmake/GStreamer.cmake b/linden/indra/cmake/GStreamer.cmake
index 7b380a8..c1bbc57 100644
--- a/linden/indra/cmake/GStreamer.cmake
+++ b/linden/indra/cmake/GStreamer.cmake
@@ -62,18 +62,36 @@ else (WINDOWS)
62 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/libxml2 62 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/libxml2
63 ) 63 )
64 64
65 set(GSTREAMER_LIBRARIES 65 if (DARWIN)
66 gstvideo-0.10 66
67 gstaudio-0.10 67 set(GSTREAMER_LIBRARIES
68 gstbase-0.10 68 gstvideo-0.10
69 gstreamer-0.10 69 gstaudio-0.10
70 gobject-2.0 70 gstbase-0.10
71 gmodule-2.0 71 gstreamer-0.10
72 dl 72 gobject-2.0
73 gthread-2.0 73 gmodule-2.0
74 rt 74 gthread-2.0
75 glib-2.0 75 glib-2.0
76 ) 76 xml2
77 )
78
79 else (DARWIN)
80
81 set(GSTREAMER_LIBRARIES
82 gstvideo-0.10
83 gstaudio-0.10
84 gstbase-0.10
85 gstreamer-0.10
86 gobject-2.0
87 gmodule-2.0
88 dl
89 gthread-2.0
90 rt
91 glib-2.0
92 )
93
94 endif (DARWIN)
77 95
78endif (WINDOWS) 96endif (WINDOWS)
79 97
diff --git a/linden/indra/cmake/LLMedia.cmake b/linden/indra/cmake/LLMedia.cmake
index b7bf11c..8a36a69 100644
--- a/linden/indra/cmake/LLMedia.cmake
+++ b/linden/indra/cmake/LLMedia.cmake
@@ -1,7 +1,6 @@
1# -*- cmake -*- 1# -*- cmake -*-
2 2
3include(GStreamer) 3include(GStreamer)
4include(QuickTime)
5 4
6set(LLMEDIA_INCLUDE_DIRS 5set(LLMEDIA_INCLUDE_DIRS
7 ${LIBS_OPEN_DIR}/llmedia 6 ${LIBS_OPEN_DIR}/llmedia
@@ -11,5 +10,4 @@ set(LLMEDIA_LIBRARIES
11 llmedia 10 llmedia
12 ${GSTREAMER_LIBRARIES} 11 ${GSTREAMER_LIBRARIES}
13 ${GSTREAMER_PLUGINS_BASE_LIBRARIES} 12 ${GSTREAMER_PLUGINS_BASE_LIBRARIES}
14 ${QUICKTIME_LIBRARY}
15 ) 13 )
diff --git a/linden/indra/cmake/OPENAL.cmake b/linden/indra/cmake/OPENAL.cmake
index 5e71f66..f06a38e 100644
--- a/linden/indra/cmake/OPENAL.cmake
+++ b/linden/indra/cmake/OPENAL.cmake
@@ -10,16 +10,18 @@ if (OPENAL)
10 # OPENAL_LIB 10 # OPENAL_LIB
11 11
12 if (WINDOWS) 12 if (WINDOWS)
13 find_library(OPENAL_LIB 13 find_library(OPENAL_LIB
14 NAMES openal openal32 OpenAL OpenAL32 wrap_oal 14 NAMES openal32
15 PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release 15 PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release
16 ) 16 )
17 17 elseif (DARWIN)
18 # Look for for system's OpenAL.framework
19 find_library(OPENAL_LIB
20 NAMES OpenAL openal
21 PATHS ${ARCH_PREBUILT_DIRS_RELEASE}
22 )
18 else (WINDOWS) 23 else (WINDOWS)
19 find_library(OPENAL_LIB 24 set(OPENAL_LIB openal)
20 NAMES openal openal32 OpenAL OpenAL32 wrap_oal
21 PATHS ${ARCH_PREBUILT_DIRS_RELEASE}
22 )
23 endif (WINDOWS) 25 endif (WINDOWS)
24 26
25 if (NOT OPENAL_LIB) 27 if (NOT OPENAL_LIB)
@@ -34,7 +36,7 @@ if (OPENAL)
34 36
35 find_path(OPENAL_INCLUDE_DIR 37 find_path(OPENAL_INCLUDE_DIR
36 NAMES al.h 38 NAMES al.h
37 PATHS ${LIBS_PREBUILT_DIR}/include/AL /usr/include/AL 39 PATHS ${LIBS_PREBUILT_DIR}/include/AL
38 ) 40 )
39 41
40 if (NOT OPENAL_INCLUDE_DIR) 42 if (NOT OPENAL_INCLUDE_DIR)
@@ -49,15 +51,11 @@ if (OPENAL)
49 51
50 if (WINDOWS) 52 if (WINDOWS)
51 find_library(ALUT_LIB 53 find_library(ALUT_LIB
52 NAMES alut freealut 54 NAMES alut freealut
53 PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release 55 PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release
54 ) 56 )
55
56 else (WINDOWS) 57 else (WINDOWS)
57 find_library(ALUT_LIB 58 set(ALUT_LIB alut)
58 NAMES alut freealut
59 PATHS ${ARCH_PREBUILT_DIRS_RELEASE}
60 )
61 endif (WINDOWS) 59 endif (WINDOWS)
62 60
63 if (NOT ALUT_LIB) 61 if (NOT ALUT_LIB)
@@ -72,7 +70,7 @@ if (OPENAL)
72 70
73 find_path(ALUT_INCLUDE_DIR 71 find_path(ALUT_INCLUDE_DIR
74 NAMES alut.h 72 NAMES alut.h
75 PATHS ${LIBS_PREBUILT_DIR}/include/AL /usr/include/AL 73 PATHS ${LIBS_PREBUILT_DIR}/include/AL
76 ) 74 )
77 75
78 if (NOT ALUT_INCLUDE_DIR) 76 if (NOT ALUT_INCLUDE_DIR)
diff --git a/linden/indra/cmake/QuickTime.cmake b/linden/indra/cmake/QuickTime.cmake
deleted file mode 100644
index 4352709..0000000
--- a/linden/indra/cmake/QuickTime.cmake
+++ /dev/null
@@ -1,49 +0,0 @@
1# -*- cmake -*-
2
3if(INSTALL_PROPRIETARY)
4 include(Prebuilt)
5 use_prebuilt_binary(quicktime)
6endif(INSTALL_PROPRIETARY)
7
8if (DARWIN)
9 include(CMakeFindFrameworks)
10 find_library(QUICKTIME_LIBRARY QuickTime)
11elseif (WINDOWS)
12 set(QUICKTIME_SDK_DIR "$ENV{PROGRAMFILES}/QuickTime SDK"
13 CACHE PATH "Location of the QuickTime SDK.")
14
15 find_library(DEBUG_QUICKTIME_LIBRARY qtmlclient
16 PATHS
17 ${ARCH_PREBUILT_DIRS_DEBUG}
18 "${QUICKTIME_SDK_DIR}\\libraries"
19 )
20
21 find_library(RELEASE_QUICKTIME_LIBRARY qtmlclient
22 PATHS
23 ${ARCH_PREBUILT_DIRS_RELEASE}
24 "${QUICKTIME_SDK_DIR}\\libraries"
25 )
26
27 if (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY)
28 set(QUICKTIME_LIBRARY
29 optimized ${RELEASE_QUICKTIME_LIBRARY}
30 debug ${DEBUG_QUICKTIME_LIBRARY}
31 )
32
33 endif (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY)
34
35 include_directories(
36 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/quicktime
37 "${QUICKTIME_SDK_DIR}\\CIncludes"
38 )
39endif (DARWIN)
40
41mark_as_advanced(QUICKTIME_LIBRARY)
42
43if (QUICKTIME_LIBRARY)
44 set(QUICKTIME ON CACHE BOOL "Build with QuickTime streaming media support.")
45endif (QUICKTIME_LIBRARY)
46
47if (QUICKTIME)
48 add_definitions(-DLL_QUICKTIME_ENABLED=1)
49endif (QUICKTIME)
diff --git a/linden/indra/llaudio/CMakeLists.txt b/linden/indra/llaudio/CMakeLists.txt
index aa15a9d..8a26e54 100644
--- a/linden/indra/llaudio/CMakeLists.txt
+++ b/linden/indra/llaudio/CMakeLists.txt
@@ -4,6 +4,7 @@ project(llaudio)
4 4
5include(00-Common) 5include(00-Common)
6include(Audio) 6include(Audio)
7include(OPENAL)
7include(FMOD) 8include(FMOD)
8include(LLCommon) 9include(LLCommon)
9include(LLMath) 10include(LLMath)
diff --git a/linden/indra/llaudio/audioengine_openal.cpp b/linden/indra/llaudio/audioengine_openal.cpp
index 8f836a6..6d9a242 100644
--- a/linden/indra/llaudio/audioengine_openal.cpp
+++ b/linden/indra/llaudio/audioengine_openal.cpp
@@ -172,6 +172,17 @@ LLAudioChannelOpenAL::LLAudioChannelOpenAL()
172 mLastSamplePos(0) 172 mLastSamplePos(0)
173{ 173{
174 alGenSources(1, &mALSource); 174 alGenSources(1, &mALSource);
175
176 if( mALSource == AL_NONE )
177 {
178 ALenum error = alGetError();
179 if( error == AL_NO_ERROR )
180 {
181 LL_WARNS("OpenAL") << "LLAudioChannelOpenAL::LLAudioChannelOpenAL() Could not generate mALSource, but no error is indicated!" << LL_ENDL;
182 }
183 LL_WARNS("OpenAL") << "LLAudioChannelOpenAL::LLAudioChannelOpenAL() Could not generate mALSource: (" << error << ") " << alGetString( error ) << LL_ENDL;
184 }
185
175} 186}
176 187
177LLAudioChannelOpenAL::~LLAudioChannelOpenAL() 188LLAudioChannelOpenAL::~LLAudioChannelOpenAL()
diff --git a/linden/indra/llcommon/llerror.cpp b/linden/indra/llcommon/llerror.cpp
index 5c7c3cd..b95b325 100644
--- a/linden/indra/llcommon/llerror.cpp
+++ b/linden/indra/llcommon/llerror.cpp
@@ -902,7 +902,7 @@ namespace {
902 return; 902 return;
903 } 903 }
904 904
905 const int MAX_RETRIES = 5; 905 const int MAX_RETRIES = 10;
906 for (int attempts = 0; attempts < MAX_RETRIES; ++attempts) 906 for (int attempts = 0; attempts < MAX_RETRIES; ++attempts)
907 { 907 {
908 apr_status_t s = apr_thread_mutex_trylock(gLogMutexp); 908 apr_status_t s = apr_thread_mutex_trylock(gLogMutexp);
@@ -914,9 +914,7 @@ namespace {
914 } 914 }
915 915
916 ms_sleep(1); 916 ms_sleep(1);
917 //apr_thread_yield(); 917 apr_thread_yield();
918 // Just yielding won't necessarily work, I had problems with
919 // this on Linux - doug 12/02/04
920 } 918 }
921 919
922 // We're hosed, we can't get the mutex. Blah. 920 // We're hosed, we can't get the mutex. Blah.
diff --git a/linden/indra/llcommon/llthread.cpp b/linden/indra/llcommon/llthread.cpp
index 822adc2..4879d58 100644
--- a/linden/indra/llcommon/llthread.cpp
+++ b/linden/indra/llcommon/llthread.cpp
@@ -84,7 +84,7 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap
84 84
85 85
86LLThread::LLThread(const std::string& name, apr_pool_t *poolp) : 86LLThread::LLThread(const std::string& name, apr_pool_t *poolp) :
87 mPaused(FALSE), 87 mPaused(false),
88 mName(name), 88 mName(name),
89 mAPRThreadp(NULL), 89 mAPRThreadp(NULL),
90 mStatus(STOPPED) 90 mStatus(STOPPED)
@@ -92,12 +92,12 @@ LLThread::LLThread(const std::string& name, apr_pool_t *poolp) :
92 // Thread creation probably CAN be paranoid about APR being initialized, if necessary 92 // Thread creation probably CAN be paranoid about APR being initialized, if necessary
93 if (poolp) 93 if (poolp)
94 { 94 {
95 mIsLocalPool = FALSE; 95 mIsLocalPool = false;
96 mAPRPoolp = poolp; 96 mAPRPoolp = poolp;
97 } 97 }
98 else 98 else
99 { 99 {
100 mIsLocalPool = TRUE; 100 mIsLocalPool = true;
101 apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread 101 apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
102 } 102 }
103 mRunCondition = new LLCondition(mAPRPoolp); 103 mRunCondition = new LLCondition(mAPRPoolp);
@@ -268,12 +268,12 @@ LLMutex::LLMutex(apr_pool_t *poolp) :
268{ 268{
269 //if (poolp) 269 //if (poolp)
270 //{ 270 //{
271 // mIsLocalPool = FALSE; 271 // mIsLocalPool = false;
272 // mAPRPoolp = poolp; 272 // mAPRPoolp = poolp;
273 //} 273 //}
274 //else 274 //else
275 { 275 {
276 mIsLocalPool = TRUE; 276 mIsLocalPool = true;
277 apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread 277 apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
278 } 278 }
279 apr_thread_mutex_create(&mAPRMutexp, APR_THREAD_MUTEX_UNNESTED, mAPRPoolp); 279 apr_thread_mutex_create(&mAPRMutexp, APR_THREAD_MUTEX_UNNESTED, mAPRPoolp);
diff --git a/linden/indra/llcommon/llthread.h b/linden/indra/llcommon/llthread.h
index 9da3134..a0b22f2 100644
--- a/linden/indra/llcommon/llthread.h
+++ b/linden/indra/llcommon/llthread.h
@@ -67,7 +67,7 @@ public:
67 // Called from MAIN THREAD. 67 // Called from MAIN THREAD.
68 void pause(); 68 void pause();
69 void unpause(); 69 void unpause();
70 bool isPaused() { return isStopped() || mPaused == TRUE; } 70 bool isPaused() { return isStopped() || mPaused; }
71 71
72 // Cause the thread to wake up and check its condition 72 // Cause the thread to wake up and check its condition
73 void wake(); 73 void wake();
@@ -84,7 +84,7 @@ public:
84 apr_pool_t *getAPRPool() { return mAPRPoolp; } 84 apr_pool_t *getAPRPool() { return mAPRPoolp; }
85 85
86private: 86private:
87 BOOL mPaused; 87 bool mPaused;
88 88
89 // static function passed to APR thread creation routine 89 // static function passed to APR thread creation routine
90 static void *APR_THREAD_FUNC staticRun(apr_thread_t *apr_threadp, void *datap); 90 static void *APR_THREAD_FUNC staticRun(apr_thread_t *apr_threadp, void *datap);
@@ -95,7 +95,7 @@ protected:
95 95
96 apr_thread_t *mAPRThreadp; 96 apr_thread_t *mAPRThreadp;
97 apr_pool_t *mAPRPoolp; 97 apr_pool_t *mAPRPoolp;
98 BOOL mIsLocalPool; 98 bool mIsLocalPool;
99 EThreadStatus mStatus; 99 EThreadStatus mStatus;
100 100
101 void setQuitting(); 101 void setQuitting();
@@ -137,7 +137,7 @@ public:
137protected: 137protected:
138 apr_thread_mutex_t *mAPRMutexp; 138 apr_thread_mutex_t *mAPRMutexp;
139 apr_pool_t *mAPRPoolp; 139 apr_pool_t *mAPRPoolp;
140 BOOL mIsLocalPool; 140 bool mIsLocalPool;
141}; 141};
142 142
143// Actually a condition/mutex pair (since each condition needs to be associated with a mutex). 143// Actually a condition/mutex pair (since each condition needs to be associated with a mutex).
diff --git a/linden/indra/llmedia/CMakeLists.txt b/linden/indra/llmedia/CMakeLists.txt
index 0e5b261..ea0ce1a 100644
--- a/linden/indra/llmedia/CMakeLists.txt
+++ b/linden/indra/llmedia/CMakeLists.txt
@@ -65,19 +65,6 @@ if (MOZLIB)
65 list(APPEND llmedia_HEADER_FILES llmediaimplllmozlib.h) 65 list(APPEND llmedia_HEADER_FILES llmediaimplllmozlib.h)
66endif (MOZLIB) 66endif (MOZLIB)
67 67
68if (QUICKTIME)
69 list(APPEND llmedia_SOURCE_FILES llmediaimplquicktime.cpp)
70 list(APPEND llmedia_HEADER_FILES llmediaimplquicktime.h)
71
72 # We use a bunch of deprecated system APIs.
73 if (DARWIN)
74 set_source_files_properties(
75 llmediaimplquicktime.cpp PROPERTIES
76 COMPILE_FLAGS -Wno-deprecated-declarations
77 )
78 endif (DARWIN)
79endif (QUICKTIME)
80
81set_source_files_properties(${llmedia_HEADER_FILES} 68set_source_files_properties(${llmedia_HEADER_FILES}
82 PROPERTIES HEADER_FILE_ONLY TRUE) 69 PROPERTIES HEADER_FILE_ONLY TRUE)
83 70
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp
index 7ae6b02..7eb2b7b 100644
--- a/linden/indra/llmedia/llmediaimplgstreamer.cpp
+++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp
@@ -60,6 +60,10 @@ extern "C" {
60#include "llgstplaythread.h" 60#include "llgstplaythread.h"
61 61
62 62
63#if LL_DARWIN
64#include <CoreFoundation/CoreFoundation.h> // For CF functions used in set_gst_plugin_path
65#endif
66
63// register this impl with media manager factory 67// register this impl with media manager factory
64static LLMediaImplRegister sLLMediaImplGStreamerReg( "LLMediaImplGStreamer", new LLMediaImplGStreamerMaker() ); 68static LLMediaImplRegister sLLMediaImplGStreamerReg( "LLMediaImplGStreamer", new LLMediaImplGStreamerMaker() );
65 69
@@ -223,61 +227,111 @@ bool LLMediaImplGStreamer::startup (LLMediaManagerData* init_data)
223 227
224void LLMediaImplGStreamer::set_gst_plugin_path() 228void LLMediaImplGStreamer::set_gst_plugin_path()
225{ 229{
226 // Only needed for Windows. 230 // Linux sets GST_PLUGIN_PATH in wrapper.sh, not here.
227 // Linux sets in wrapper.sh, Mac sets in Info-Imprudence.plist 231#if LL_WINDOWS || LL_DARWIN
228#ifdef LL_WINDOWS
229 232
230 char* imp_cwd; 233 std::string imp_dir = "";
231 234
232 // Get the current working directory: 235 // Get the current working directory:
233 imp_cwd = _getcwd(NULL,0); 236#if LL_WINDOWS
237 char* raw_dir;
238 raw_dir = _getcwd(NULL,0);
239 if( raw_dir != NULL )
240 {
241 imp_dir = std::string( raw_dir );
242 }
243#elif LL_DARWIN
244 CFBundleRef main_bundle = CFBundleGetMainBundle();
245 if( main_bundle != NULL )
246 {
247 CFURLRef bundle_url = CFBundleCopyBundleURL( main_bundle );
248 if( bundle_url != NULL )
249 {
250 #ifndef MAXPATHLEN
251 #define MAXPATHLEN 1024
252 #endif
253 char raw_dir[MAXPATHLEN];
254 if( CFURLGetFileSystemRepresentation( bundle_url, true, (UInt8 *)raw_dir, MAXPATHLEN) )
255 {
256 imp_dir = std::string( raw_dir ) + "/Contents/MacOS/";
257 }
258 CFRelease(bundle_url);
259 }
260 }
261#endif
262
263 if( imp_dir == "" )
264 {
265 LL_WARNS("MediaImpl") << "Could not get application directory, not setting GST_PLUGIN_PATH."
266 << LL_ENDL;
267 return;
268 }
234 269
235 if(imp_cwd == NULL) 270 LL_DEBUGS("MediaImpl") << "Imprudence is installed at "
271 << imp_dir << LL_ENDL;
272
273 // ":" on Mac and 'Nix, ";" on Windows
274 std::string separator = G_SEARCHPATH_SEPARATOR_S;
275
276 // Grab the current path, if it's set.
277 std::string old_plugin_path = "";
278 char *old_path = getenv("GST_PLUGIN_PATH");
279 if(old_path == NULL)
236 { 280 {
237 LL_DEBUGS("MediaImpl") << "_getcwd failed, not setting GST_PLUGIN_PATH." 281 LL_DEBUGS("MediaImpl") << "Did not find user-set GST_PLUGIN_PATH."
238 << LL_ENDL; 282 << LL_ENDL;
239 } 283 }
240 else 284 else
241 { 285 {
242 LL_DEBUGS("MediaImpl") << "Imprudence is installed at " 286 old_plugin_path = separator + std::string( old_path );
243 << imp_cwd << LL_ENDL; 287 }
244 288
245 // Grab the current path, if it's set.
246 std::string old_plugin_path = "";
247 char *old_path = getenv("GST_PLUGIN_PATH");
248 if(old_path == NULL)
249 {
250 LL_DEBUGS("MediaImpl") << "Did not find user-set GST_PLUGIN_PATH."
251 << LL_ENDL;
252 }
253 else
254 {
255 old_plugin_path = ";" + std::string( old_path );
256 }
257 289
290 // Search both Imprudence and Imprudence\lib\gstreamer-plugins.
291 // But we also want to search the path the user has set, if any.
292 std::string plugin_path =
293 "GST_PLUGIN_PATH=" +
294 imp_dir + separator +
295#if LL_WINDOWS
296 imp_dir + "\\lib\\gstreamer-plugins" +
297#elif LL_DARWIN
298 imp_dir + "/../Resources/lib/gstreamer-plugins" +
299#endif
300 old_plugin_path;
258 301
259 // Search both Imprudence and Imprudence\lib\gstreamer-plugins. 302 int put_result;
260 // If those fail, search the path the user has set, if any.
261 std::string plugin_path =
262 "GST_PLUGIN_PATH=" +
263 std::string(imp_cwd) + "\\lib\\gstreamer-plugins;" +
264 std::string(imp_cwd) +
265 old_plugin_path;
266 303
267 // Place GST_PLUGIN_PATH in the environment settings for imprudence.exe 304 // Place GST_PLUGIN_PATH in the environment settings
268 // Returns 0 on success 305#if LL_WINDOWS
269 if(_putenv( (char*)plugin_path.c_str() )) 306 put_result = _putenv( (char*)plugin_path.c_str() );
270 { 307#elif LL_DARWIN
271 LL_WARNS("MediaImpl") << "Setting environment variable failed!" << LL_ENDL; 308 put_result = putenv( (char*)plugin_path.c_str() );
272 } 309#endif
273 else 310
274 { 311 if( put_result == -1 )
275 LL_DEBUGS("MediaImpl") << "GST_PLUGIN_PATH set to " 312 {
276 << getenv("GST_PLUGIN_PATH") << LL_ENDL; 313 LL_WARNS("MediaImpl") << "Setting GST_PLUGIN_PATH failed!" << LL_ENDL;
277 } 314 }
315 else
316 {
317 LL_DEBUGS("MediaImpl") << "GST_PLUGIN_PATH set to "
318 << getenv("GST_PLUGIN_PATH") << LL_ENDL;
278 } 319 }
320
321 // Don't load system plugins. We only want to use ours, to avoid conflicts.
322#if LL_WINDOWS
323 put_result = _putenv( "GST_PLUGIN_SYSTEM_PATH=\"\"" );
324#elif LL_DARWIN
325 put_result = putenv( "GST_PLUGIN_SYSTEM_PATH=\"\"" );
326#endif
279 327
280#endif //LL_WINDOWS 328 if( put_result == -1 )
329 {
330 LL_WARNS("MediaImpl") << "Setting GST_PLUGIN_SYSTEM_PATH=\"\" failed!"
331 << LL_ENDL;
332 }
333
334#endif // LL_WINDOWS || LL_DARWIN
281} 335}
282 336
283 337
@@ -303,7 +357,7 @@ void LLMediaImplGStreamer::gstreamer_log(GstDebugCategory *category,
303 switch( level ) 357 switch( level )
304 { 358 {
305 case GST_LEVEL_ERROR: 359 case GST_LEVEL_ERROR:
306 LL_ERRS("MediaImpl") << log.str() << LL_ENDL; 360 LL_WARNS("MediaImpl") << "(ERROR) " << log.str() << LL_ENDL;
307 break; 361 break;
308 case GST_LEVEL_WARNING: 362 case GST_LEVEL_WARNING:
309 LL_WARNS("MediaImpl") << log.str() << LL_ENDL; 363 LL_WARNS("MediaImpl") << log.str() << LL_ENDL;
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index 1e48d28..f971f97 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -849,7 +849,7 @@ if (DARWIN)
849 849
850 # Add resource files to the project. 850 # Add resource files to the project.
851 set(viewer_RESOURCE_FILES 851 set(viewer_RESOURCE_FILES
852 secondlife.icns 852 viewer.icns
853 macview.r 853 macview.r
854 gpu_table.txt 854 gpu_table.txt
855 Info-Imprudence.plist 855 Info-Imprudence.plist
@@ -1393,7 +1393,6 @@ target_link_libraries(imprudence-bin
1393 ${SMARTHEAP_LIBRARY} 1393 ${SMARTHEAP_LIBRARY}
1394 ${UI_LIBRARIES} 1394 ${UI_LIBRARIES}
1395 ${NDOF_LIBRARY} 1395 ${NDOF_LIBRARY}
1396 ${QUICKTIME_LIBRARY}
1397 ${WINDOWS_LIBRARIES} 1396 ${WINDOWS_LIBRARIES}
1398 ${XMLRPCEPI_LIBRARIES} 1397 ${XMLRPCEPI_LIBRARIES}
1399 ${ZLIB_LIBRARIES} 1398 ${ZLIB_LIBRARIES}
@@ -1447,7 +1446,7 @@ if (DARWIN)
1447 PROPERTIES 1446 PROPERTIES
1448 OUTPUT_NAME "${product}" 1447 OUTPUT_NAME "${product}"
1449 MACOSX_BUNDLE_INFO_STRING "info string - localize me" 1448 MACOSX_BUNDLE_INFO_STRING "info string - localize me"
1450 MACOSX_BUNDLE_ICON_FILE "secondlife.icns" 1449 MACOSX_BUNDLE_ICON_FILE "viewer.icns"
1451 MACOSX_BUNDLE_GUI_IDENTIFIER "Imprudence" 1450 MACOSX_BUNDLE_GUI_IDENTIFIER "Imprudence"
1452 MACOSX_BUNDLE_LONG_VERSION_STRING "ververver" 1451 MACOSX_BUNDLE_LONG_VERSION_STRING "ververver"
1453 MACOSX_BUNDLE_BUNDLE_NAME "Imprudence" 1452 MACOSX_BUNDLE_BUNDLE_NAME "Imprudence"
diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-Imprudence.plist
index 32bba70..357d171 100644
--- a/linden/indra/newview/Info-SecondLife.plist
+++ b/linden/indra/newview/Info-Imprudence.plist
@@ -7,7 +7,7 @@
7 <key>CFBundleExecutable</key> 7 <key>CFBundleExecutable</key>
8 <string>Imprudence</string> 8 <string>Imprudence</string>
9 <key>CFBundleIconFile</key> 9 <key>CFBundleIconFile</key>
10 <string>secondlife.icns</string> 10 <string>viewer.icns</string>
11 <key>CFBundleIdentifier</key> 11 <key>CFBundleIdentifier</key>
12 <string>com.secondlife.indra.viewer</string> 12 <string>com.secondlife.indra.viewer</string>
13 <key>CFBundleInfoDictionaryVersion</key> 13 <key>CFBundleInfoDictionaryVersion</key>
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 1ecab2b..55ff208 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -4459,7 +4459,7 @@
4459 <key>Type</key> 4459 <key>Type</key>
4460 <string>String</string> 4460 <string>String</string>
4461 <key>Value</key> 4461 <key>Value</key>
4462 <string /> 4462 <string>http://imprudenceviewer.org/splash/</string>
4463 </map> 4463 </map>
4464 <key>LosslessJ2CUpload</key> 4464 <key>LosslessJ2CUpload</key>
4465 <map> 4465 <map>
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index 3583726..71c07b6 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -403,10 +403,51 @@ class DarwinManifest(ViewerManifest):
403 # <bundle>/Contents/MacOS/ 403 # <bundle>/Contents/MacOS/
404 self.contents_of_tar(self.args['source']+'/mozilla-universal-darwin.tgz', 'MacOS') 404 self.contents_of_tar(self.args['source']+'/mozilla-universal-darwin.tgz', 'MacOS')
405 405
406 self.path("Info-SecondLife.plist", dst="Info.plist") 406 self.path("Info-Imprudence.plist", dst="Info.plist")
407 407
408 # copy additional libs in <bundle>/Contents/MacOS/ 408 # copy additional libs in <bundle>/Contents/MacOS/
409 self.path("../../libraries/universal-darwin/lib_release/libndofdev.dylib", dst="MacOS/libndofdev.dylib") 409 if self.prefix(src="../../libraries/universal-darwin/lib_release", dst="MacOS/"):
410
411 self.path("libndofdev.dylib")
412
413 self.path("libopenal.1.dylib")
414 self.path("libalut.0.dylib")
415
416 self.path("libglib-2.0.dylib")
417 self.path("libgmodule-2.0.dylib")
418 self.path("libgobject-2.0.dylib")
419 self.path("libgthread-2.0.dylib")
420
421 self.path("libgstreamer-0.10.dylib")
422 self.path("libgstapp-0.10.dylib")
423 self.path("libgstaudio-0.10.dylib")
424 self.path("libgstbase-0.10.dylib")
425 self.path("libgstcdda-0.10.dylib")
426 self.path("libgstcontroller-0.10.dylib")
427 self.path("libgstdataprotocol-0.10.dylib")
428 self.path("libgstfft-0.10.dylib")
429 self.path("libgstinterfaces-0.10.dylib")
430 self.path("libgstnet-0.10.dylib")
431 self.path("libgstnetbuffer-0.10.dylib")
432 self.path("libgstpbutils-0.10.dylib")
433 self.path("libgstriff-0.10.dylib")
434 self.path("libgstrtp-0.10.dylib")
435 self.path("libgstrtsp-0.10.dylib")
436 self.path("libgstsdp-0.10.dylib")
437 self.path("libgsttag-0.10.dylib")
438 self.path("libgstvideo-0.10.dylib")
439
440 self.path("libintl.3.dylib")
441 self.path("libjpeg.62.dylib")
442 self.path("libogg.0.dylib")
443 self.path("liboil-0.3.0.dylib")
444 self.path("libpango-1.0.0.dylib")
445 self.path("libpangoft2-1.0.0.dylib")
446 self.path("libtheora.0.dylib")
447 self.path("libvorbis.0.dylib")
448 self.path("libvorbisenc.2.dylib")
449
450 self.end_prefix("../../libraries/universal-darwin/lib_release")
410 451
411 # replace the default theme with our custom theme (so scrollbars work). 452 # replace the default theme with our custom theme (so scrollbars work).
412 if self.prefix(src="mozilla-theme", dst="MacOS/chrome"): 453 if self.prefix(src="mozilla-theme", dst="MacOS/chrome"):
@@ -432,7 +473,7 @@ class DarwinManifest(ViewerManifest):
432 self.path("featuretable_mac.txt") 473 self.path("featuretable_mac.txt")
433 self.path("SecondLife.nib") 474 self.path("SecondLife.nib")
434 475
435 self.path("secondlife.icns") 476 self.path("viewer.icns")
436 477
437 # Translations 478 # Translations
438 self.path("English.lproj") 479 self.path("English.lproj")
@@ -441,9 +482,72 @@ class DarwinManifest(ViewerManifest):
441 self.path("Korean.lproj") 482 self.path("Korean.lproj")
442 483
443 484
485 if self.prefix(src="../../libraries/universal-darwin/lib_release/gstreamer-plugins", dst="lib/gstreamer-plugins"):
486 self.path("libgstaacparse.so")
487 self.path("libgstadder.so")
488 self.path("libgstaiffparse.so")
489 self.path("libgstamrparse.so")
490 self.path("libgstapp.so")
491 self.path("libgstaudioconvert.so")
492 self.path("libgstaudiorate.so")
493 self.path("libgstaudioresample.so")
494 self.path("libgstautodetect.so")
495 self.path("libgstavi.so")
496 self.path("libgstcoreelements.so")
497 self.path("libgstcoreindexers.so")
498 self.path("libgstdebug.so")
499 self.path("libgstdecodebin.so")
500 self.path("libgstdecodebin2.so")
501 self.path("libgstdeinterlace2.so")
502 self.path("libgstequalizer.so")
503 self.path("libgstffmpeg.so")
504 self.path("libgstffmpegcolorspace.so")
505 self.path("libgstffmpegscale.so")
506 self.path("libgstflac.so")
507 self.path("libgstflv.so")
508 self.path("libgstgdp.so")
509 self.path("libgsth264parse.so")
510 self.path("libgsticydemux.so")
511 self.path("libgstid3demux.so")
512 self.path("libgstinterleave.so")
513 self.path("libgstjpeg.so")
514 self.path("libgstlevel.so")
515 self.path("libgstmetadata.so")
516 self.path("libgstmpeg4videoparse.so")
517 self.path("libgstmpegdemux.so")
518 self.path("libgstmpegvideoparse.so")
519 self.path("libgstmultipart.so")
520 self.path("libgstneonhttpsrc.so")
521 self.path("libgstogg.so")
522 self.path("libgstosxaudio.so")
523 self.path("libgstosxvideosink.so")
524 self.path("libgstpango.so")
525 self.path("libgstplaybin.so")
526 self.path("libgstpng.so")
527 self.path("libgstpostproc.so")
528 self.path("libgstqtdemux.so")
529 self.path("libgstqueue2.so")
530 self.path("libgstreal.so")
531 self.path("libgstrtp.so")
532 self.path("libgstrtpmanager.so")
533 self.path("libgstrtsp.so")
534 self.path("libgstsdpelem.so")
535 self.path("libgstselector.so")
536 self.path("libgsttcp.so")
537 self.path("libgsttheora.so")
538 self.path("libgsttypefindfunctions.so")
539 self.path("libgstudp.so")
540 self.path("libgstvideoscale.so")
541 self.path("libgstvolume.so")
542 self.path("libgstvorbis.so")
543 self.path("libgstwavparse.so")
544
545 self.end_prefix("../../libraries/universal-darwin/lib_release/gstreamer-plugins")
546
547
444 # SLVoice and vivox lols 548 # SLVoice and vivox lols
445 self.path("vivox-runtime/universal-darwin/libalut.dylib", "libalut.dylib") 549 #self.path("vivox-runtime/universal-darwin/libalut.dylib", "libalut.dylib")
446 self.path("vivox-runtime/universal-darwin/libopenal.dylib", "libopenal.dylib") 550 #self.path("vivox-runtime/universal-darwin/libopenal.dylib", "libopenal.dylib")
447 #self.path("vivox-runtime/universal-darwin/libortp.dylib", "libortp.dylib") 551 #self.path("vivox-runtime/universal-darwin/libortp.dylib", "libortp.dylib")
448 #self.path("vivox-runtime/universal-darwin/libvivoxsdk.dylib", "libvivoxsdk.dylib") 552 #self.path("vivox-runtime/universal-darwin/libvivoxsdk.dylib", "libvivoxsdk.dylib")
449 #self.path("vivox-runtime/universal-darwin/SLVoice", "SLVoice") 553 #self.path("vivox-runtime/universal-darwin/SLVoice", "SLVoice")