diff options
-rw-r--r-- | indra/newview/llviewermedia.cpp | 109 | ||||
-rw-r--r-- | indra/newview/llviewermedia.h | 6 | ||||
-rw-r--r-- | indra/newview/skins/default/textures/textures.xml | 4 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_bottomtray.xml | 224 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml | 23 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/widgets/output_monitor.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/widgets/split_button.xml | 23 | ||||
-rw-r--r-- | install.xml | 4 |
8 files changed, 225 insertions, 170 deletions
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index b0f22166a0..41a676dc53 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -49,6 +49,7 @@ #include "llnotifications.h" #include "lluuid.h" #include "llkeyboard.h" +#include "llmutelist.h" #include <boost/bind.hpp> // for SkinFolder listener #include <boost/signals2.hpp> @@ -195,6 +196,14 @@ static void remove_media_impl(LLViewerMediaImpl* media) } } +class LLViewerMediaMuteListObserver : public LLMuteListObserver +{ + /* virtual */ void onChange() { LLViewerMedia::muteListChanged();} +}; + +static LLViewerMediaMuteListObserver sViewerMediaMuteListObserver; +static bool sViewerMediaMuteListObserverInitialized = false; + ////////////////////////////////////////////////////////////////////////////////////////// // LLViewerMedia @@ -410,10 +419,35 @@ F32 LLViewerMedia::getVolume() return sGlobalVolume; } +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::muteListChanged() +{ + // When the mute list changes, we need to check mute status on all impls. + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + + for(; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + pimpl->mNeedsMuteCheck = true; + } +} + // This is the predicate function used to sort sViewerMediaImplList by priority. static inline bool compare_impl_interest(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) { - if(i1->hasFocus()) + if(i1->mIsMuted || i1->mMediaSourceFailed) + { + // Muted or failed items always go to the end of the list, period. + return false; + } + else if(i2->mIsMuted || i2->mMediaSourceFailed) + { + // Muted or failed items always go to the end of the list, period. + return true; + } + else if(i1->hasFocus()) { // The item with user focus always comes to the front of the list, period. return true; @@ -487,8 +521,9 @@ void LLViewerMedia::updateMedia() LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL; - if(impl_count_total > (int)max_instances) + if(pimpl->mIsMuted || pimpl->mMediaSourceFailed || (impl_count_total > (int)max_instances)) { + // Never load muted or failed impls. // Hard limit on the number of instances that will be loaded at one time new_priority = LLPluginClassMedia::PRIORITY_UNLOADED; } @@ -548,6 +583,11 @@ void LLViewerMedia::updateMedia() } } + if(new_priority != LLPluginClassMedia::PRIORITY_UNLOADED) + { + impl_count_total++; + } + pimpl->setPriority(new_priority); #if 0 @@ -561,7 +601,6 @@ void LLViewerMedia::updateMedia() #endif total_cpu += pimpl->getCPUUsage(); - impl_count_total++; } LL_DEBUGS("PluginPriority") << "Total reported CPU usage is " << total_cpu << llendl; @@ -603,10 +642,19 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mDoNavigateOnLoad(false), mDoNavigateOnLoadRediscoverType(false), mDoNavigateOnLoadServerRequest(false), - mMediaSourceFailedInit(false), + mMediaSourceFailed(false), mRequestedVolume(1.0f), + mIsMuted(false), + mNeedsMuteCheck(false), mIsUpdated(false) { + + // Set up the mute list observer if it hasn't been set up already. + if(!sViewerMediaMuteListObserverInitialized) + { + LLMuteList::getInstance()->addObserver(&sViewerMediaMuteListObserver); + sViewerMediaMuteListObserverInitialized = true; + } add_media_impl(this); @@ -796,7 +844,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) } // If we got here, we want to ignore previous init failures. - mMediaSourceFailedInit = false; + mMediaSourceFailed = false; LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight); @@ -816,7 +864,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) } // Make sure the timer doesn't try re-initing this plugin repeatedly until something else changes. - mMediaSourceFailedInit = true; + mMediaSourceFailed = true; return false; } @@ -1117,9 +1165,6 @@ void LLViewerMediaImpl::navigateHome() ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mime_type, bool rediscover_type, bool server_request) { - // Helpful to have media urls in log file. Shouldn't be spammy. - llinfos << "url=" << url << " mime_type=" << mime_type << llendl; - if(server_request) { setNavState(MEDIANAVSTATE_SERVER_SENT); @@ -1141,14 +1186,24 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi // and if this was a server request, the navigate on load will also need to be one. mDoNavigateOnLoadServerRequest = server_request; + + // An explicit navigate resets the "failed" flag. + mMediaSourceFailed = false; if(mPriority == LLPluginClassMedia::PRIORITY_UNLOADED) { + // Helpful to have media urls in log file. Shouldn't be spammy. + llinfos << "UNLOADED media id= " << mTextureId << " url=" << url << " mime_type=" << mime_type << llendl; + // This impl should not be loaded at this time. LL_DEBUGS("PluginPriority") << this << "Not loading (PRIORITY_UNLOADED)" << LL_ENDL; return; } + + // Helpful to have media urls in log file. Shouldn't be spammy. + llinfos << "media id= " << mTextureId << " url=" << url << " mime_type=" << mime_type << llendl; + // If the caller has specified a non-empty MIME type, look that up in our MIME types list. // If we have a plugin for that MIME type, use that instead of attempting auto-discovery. @@ -1306,7 +1361,7 @@ bool LLViewerMediaImpl::canNavigateBack() ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::update() { - if(mMediaSource == NULL && !mMediaSourceFailedInit) + if(mMediaSource == NULL) { if(mPriority != LLPluginClassMedia::PRIORITY_UNLOADED) { @@ -1536,7 +1591,8 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH: { // The plugin failed to load properly. Make sure the timer doesn't retry. - mMediaSourceFailedInit = true; + // TODO: maybe mark this plugin as not loadable somehow? + mMediaSourceFailed = true; // TODO: may want a different message for this case? LLSD args; @@ -1547,6 +1603,9 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla case MEDIA_EVENT_PLUGIN_FAILED: { + // The plugin crashed. + mMediaSourceFailed = true; + LLSD args; args["PLUGIN"] = LLMIMETypes::implType(mMimeType); // SJB: This is getting called every frame if the plugin fails to load, continuously respawining the alert! @@ -1721,6 +1780,32 @@ void LLViewerMediaImpl::calculateInterest() // This will be a relatively common case now, since it will always be true for unloaded media. mInterest = 0.0f; } + + if(mNeedsMuteCheck) + { + // Check all objects this instance is associated with, and those objects' owners, against the mute list + mIsMuted = false; + + std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; + for(; iter != mObjectList.end() ; ++iter) + { + LLVOVolume *obj = *iter; + if(LLMuteList::getInstance()->isMuted(obj->getID())) + mIsMuted = true; + else + { + // We won't have full permissions data for all objects. Attempt to mute objects when we can tell their owners are muted. + LLPermissions* obj_perm = LLSelectMgr::getInstance()->findObjectPermissions(obj); + if(obj_perm) + { + if(LLMuteList::getInstance()->isMuted(obj_perm->getOwner())) + mIsMuted = true; + } + } + } + + mNeedsMuteCheck = false; + } } F64 LLViewerMediaImpl::getApproximateTextureInterest() @@ -1828,11 +1913,13 @@ void LLViewerMediaImpl::addObject(LLVOVolume* obj) } mObjectList.push_back(obj) ; + mNeedsMuteCheck = true; } void LLViewerMediaImpl::removeObject(LLVOVolume* obj) { mObjectList.remove(obj) ; + mNeedsMuteCheck = true; } const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 79bf3199d4..b15314e954 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -96,6 +96,7 @@ class LLViewerMedia static void toggleMediaPlay(void*); static void mediaStop(void*); static F32 getVolume(); + static void muteListChanged(); }; // Implementation functions not exported into header file @@ -172,6 +173,7 @@ public: bool isMediaPlaying(); bool isMediaPaused(); bool hasMedia(); + bool isMediaFailed() { return mMediaSourceFailed; }; ECursorType getLastSetCursor() { return mLastSetCursor; }; @@ -288,8 +290,10 @@ public: bool mDoNavigateOnLoad; bool mDoNavigateOnLoadRediscoverType; bool mDoNavigateOnLoadServerRequest; - bool mMediaSourceFailedInit; + bool mMediaSourceFailed; F32 mRequestedVolume; + bool mIsMuted; + bool mNeedsMuteCheck; private: diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index b6215982e2..4f07d25b25 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -71,7 +71,6 @@ <texture name="ComboButton_Press" file_name="widgets/ComboButton_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> - <texture name="Container" file_name="containers/Container.png" preload="false" /> <texture name="DisclosureArrow_Closed_Off" file_name="widgets/DisclosureArrow_Closed_Off.png" preload="true" /> @@ -375,7 +374,7 @@ <texture name="SliderThumb_Disabled" file_name="widgets/SliderThumb_Disabled.png" /> <texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" /> - <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="false" /> + <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" /> <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" /> <texture name="Snapshot_Press" file_name="bottomtray/Snapshot_Press.png" preload="false" /> @@ -472,6 +471,7 @@ <texture name="VoicePTT_On" file_name="bottomtray/VoicePTT_On.png" preload="false" /> <texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" /> + <texture name="Widget_UpArrow" file_name="icons/Widget_UpArrow.png" preload="true" /> <texture name="Window_Background" file_name="windows/Window_Background.png" preload="true" scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" /> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index 1196d788e4..9065c6b3e8 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -2,21 +2,21 @@ <panel mouse_opaque="true" background_visible="true" - bg_alpha_color="0.25 0.25 0.25 1" - bg_opaque_color="0.25 0.25 0.25 1" + bg_alpha_color="DkGray" + bg_opaque_color="DkGray" follows="left|bottom|right" - height="28" + height="33" layout="topleft" left="0" name="bottom_tray" top="28" - border_visible="true" + border_visible="false" width="1000"> <layout_stack - mouse_opaque="false" + mouse_opaque="false" border_size="0" - clip="false" - follows="left|right|bottom|top" + clip="false" + follows="all" height="28" layout="topleft" left="0" @@ -26,39 +26,27 @@ width="1000"> <icon auto_resize="false" - color="0 0 0 0" follows="left|right" height="10" image_name="spacer24.tga" layout="topleft" left="0" top="0" - width="5"/> + width="4" /> <layout_panel - mouse_opaque="false" + mouse_opaque="false" auto_resize="false" follows="left|right" height="28" layout="topleft" - left="5" - min_height="28" + left="0" + min_height="23" width="310" top="0" min_width="300" name="chat_bar" user_resize="false" filename="panel_nearby_chat_bar.xml"/> - <icon - auto_resize="false" - color="0 0 0 0" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" - name="DUMMY" - top="0" - width="3"/> <layout_panel mouse_opaque="false" auto_resize="false" @@ -66,26 +54,25 @@ height="28" layout="topleft" min_height="28" - width="100" - top_delta="-10" - min_width="100" + width="96" + top_delta="0" + min_width="96" name="speak_panel" user_resize="false"> <chiclet_talk follows="right" - height="20" + height="23" speak_button.font="SansSerifMedium" speak_button.tab_stop="true" show_button.tab_stop="true" layout="topleft" left="0" name="talk" - top="6" - width="100" /> - </layout_panel> + top="3" + width="96" /> + </layout_panel> <icon auto_resize="false" - color="0 0 0 0" follows="left|right" height="10" image_name="spacer24.tga" @@ -93,7 +80,7 @@ left="0" name="DUMMY" top="0" - width="5"/> + width="4"/> <layout_panel mouse_opaque="false" auto_resize="false" @@ -101,20 +88,21 @@ height="28" layout="topleft" min_height="28" - width="90" - top_delta="-10" - min_width="90" + width="76" + top_delta="0" + min_width="76" name="gesture_panel" user_resize="false"> - <gesture_combo_box + <button follows="right" - height="20" - label="Gestures" + height="23" + label="Gesture" layout="topleft" name="Gesture" left="0" - top="6" - width="90" /> + top="3" + use_ellipses="true" + width="76" /> </layout_panel> <icon auto_resize="false" @@ -126,29 +114,28 @@ left="0" name="DUMMY" top="0" - width="5"/> + width="4"/> <layout_panel - mouse_opaque="false" + mouse_opaque="false" auto_resize="false" follows="right" height="28" layout="topleft" min_height="28" name="movement_panel" - width="70" - top_delta="-10" - min_width="70"> + width="76" + min_width="76"> <button follows="left|right" - height="20" + height="23" use_ellipses="true" is_toggle="true" label="Move" layout="topleft" name="movement_btn" - tool_tip="Shows/hides movement controls" - top="6" - width="70"> + tool_tip="Show/hide movement controls" + top="3" + width="76"> <button.init_callback function="Button.SetDockableFloaterToggle" parameter="moveview" /> @@ -164,75 +151,81 @@ left="0" name="DUMMY" top="0" - width="8"/> + width="4"/> <layout_panel - mouse_opaque="false" + mouse_opaque="false" auto_resize="false" follows="left|right" height="28" layout="topleft" min_height="28" - min_width="100" + min_width="76" name="cam_panel" top_delta="-10" width="100"> <button follows="left|right" - height="20" + height="23" use_ellipses="true" is_toggle="true" label="View" layout="topleft" left="0" - tool_tip="Shows/hides camera controls" - top="6" + tool_tip="Show/hide camera controls" + top="3" name="camera_btn" - width="70"> + width="76"> <button.init_callback function="Button.SetDockableFloaterToggle" parameter="camera" /> </button> </layout_panel> + <icon + auto_resize="false" + color="0 0 0 0" + follows="left|right" + height="10" + image_name="spacer24.tga" + layout="topleft" + left="0" + name="DUMMY" + top="0" + width="4"/> <layout_panel - mouse_opaque="false" + mouse_opaque="false" auto_resize="false" - follows="right" + follows="left|right" height="28" layout="topleft" - min_height="28" - min_width="35" name="snapshot_panel" - top_delta="-10" - width="35"> + width="35"> <split_button arrow_position="right" - follows="right" - height="18" + follows="left|right" + height="23" left="0" - layout="topleft" + layout="topleft" name="snapshots" - top="6" - width="35"> - <split_button.arrow_button - image_selected="camera_presets/camera_presets_arrow_right.png" - image_unselected="camera_presets/camera_presets_arrow_right.png" - image_disabled_selected="camera_presets/camera_presets_arrow_right.png" - image_disabled="camera_presets/camera_presets_arrow_right.png" - name="snapshot_settings" - tool_tip="Snapshot settings" /> + width="46" + top="3"> <split_button.item - image_selected="camera_presets/camera_presets_snapshot.png" - image_unselected="camera_presets/camera_presets_snapshot.png" + image_overlay="Snapshot_Off" name="snapshot" - tool_tip="Take snapshot" /> - </split_button> + tool_tip="Take snapshot" + /> + <split_button.arrow_button + name="snapshot_settings" + image_overlay="Widget_UpArrow" + tool_tip="Snapshot and Preset Views" + width="18" + /> + </split_button> </layout_panel> <layout_panel mouse_opaque="false" follows="left|right" height="28" layout="topleft" - min_height="28" top="0" name="chiclet_list_panel" width="189" @@ -240,13 +233,13 @@ user_resize="false" auto_resize="true"> <chiclet_panel - mouse_opaque="false" + mouse_opaque="false" follows="left|right" - height="25" + height="28" layout="topleft" left="0" name="chiclet_list" - top="1" + top="0" chiclet_padding="3" scrolling_offset="40" width="189" /> @@ -261,36 +254,6 @@ left="0" top="0" width="5"/> - <icon - auto_resize="false" - color="0 0 0 0" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" - top="0" - width="10"/> - <view_border - auto_resize="false" - bevel_style="in" - follows="left|right" - height="28" - layout="topleft" - left="270" - name="well_separator" - top="0" - width="1" /> - <icon - auto_resize="false" - color="0 0 0 0" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" - top="0" - width="10"/> <layout_panel auto_resize="false" follows="right" @@ -299,8 +262,8 @@ min_height="28" top="0" name="sys_well_panel" - width="48" - min_width="48" + width="34" + min_width="34" user_resize="false"> <chiclet_notification follows="right" @@ -308,24 +271,25 @@ layout="topleft" left="0" name="sys_well" - top="2" - width="48"> + top="3" + width="34"> <button - image_selected="bottom_tray_sys_notifications_selected.tga" - image_unselected="bottom_tray_sys_notifications.tga"/> - <unread_notifications - width="20" - height="20" + auto_resize="true" + halign="right" + height="23" + follows="right" + flash_color="EmphasisColor" + name="Unread" + picture_style="true" + image_overlay="Widget_UpArrow" /> + <unread_notifications + width="34" + height="23" left="22" - top="23"/> -<!-- - <chiclet_notification.commit_callback - function="Notification.Show" - parameter="ClickUnimplemented" /> - --> - </chiclet_notification> + top="23" /> + </chiclet_notification> </layout_panel> - <icon + <icon auto_resize="false" color="0 0 0 0" follows="left|right" @@ -334,6 +298,6 @@ layout="topleft" left="0" top="0" - width="5"/> + width="10"/> </layout_stack> </panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 2fd82d8f3d..af00b96d27 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -6,7 +6,7 @@ layout="topleft" left="0" name="chat_bar" - top="24" + top="21" width="310"> <string name="min_width"> 310 @@ -18,20 +18,19 @@ border_style="line" border_thickness="1" follows="left|right" - height="20" + height="23" label="Click here to chat." layout="topleft" left_delta="7" left="0" name="chat_box" tool_tip="Press Enter to say, Ctrl+Enter to shout" - top="3" + top="0" width="250" /> <output_monitor auto_update="true" follows="right" draw_border="false" - halign="left" height="16" layout="topleft" left_pad="-24" @@ -40,15 +39,15 @@ top="4" visible="true" width="20" /> - <button - follows="right" + <button + follows="right" width="45" - top="3" - layout="topleft" - left_pad="5" - label="Log" - height="20" - tool_tip="Shows/hides nearby chat log"> + top="0" + layout="topleft" + left_pad="8" + label="Log" + height="23" + tool_tip="Show/hide nearby chat log"> <button.commit_callback function="Floater.Toggle" parameter="nearby_chat"/> </button> </panel> diff --git a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml index 505c7ba936..98b3e2faaa 100644 --- a/indra/newview/skins/default/xui/en/widgets/output_monitor.xml +++ b/indra/newview/skins/default/xui/en/widgets/output_monitor.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <output_monitor - image_mute="mute_icon.tga" + image_mute="parcel_lght_VoiceNo" image_off="VoicePTT_Off" image_on="VoicePTT_On" image_level_1="VoicePTT_Lvl1" diff --git a/indra/newview/skins/default/xui/en/widgets/split_button.xml b/indra/newview/skins/default/xui/en/widgets/split_button.xml index c0d3c6d7f6..2ff9ada90a 100644 --- a/indra/newview/skins/default/xui/en/widgets/split_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/split_button.xml @@ -1,24 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<split_button +<split_button font="SansSerifSmall" arrow_position="left" follows="right|top"> - <split_button.arrow_button - name="Arrow Button" - label="" - font="SansSerifSmall" - scale_image="true" - image_selected="camera_presets/camera_presets_arrow.png" - image_unselected="camera_presets/camera_presets_arrow.png" - image_disabled_selected="camera_presets/camera_presets_arrow.png" - image_disabled="camera_presets/camera_presets_arrow.png" - width="10"/> <split_button.items_panel background_visible="true" border="true" bg_alpha_color="1 1 1 1" bg_opaq_color="1 1 1 1" + scale_image="false" + image_selected="SegmentedBtn_Left_Selected" + image_unselected="SegmentedBtn_Left_Off" layout="topleft" name="item_buttons" /> + <split_button.arrow_button + name="Arrow Button" + label="" + font="SansSerifSmall" + scale_image="false" + image_selected="SegmentedBtn_Right_Selected" + image_unselected="SegmentedBtn_Right_Off" + /> </split_button> diff --git a/install.xml b/install.xml index 519f8138f5..8e5c7e7ae4 100644 --- a/install.xml +++ b/install.xml @@ -955,9 +955,9 @@ anguage Infrstructure (CLI) international standard</string> <key>linux</key> <map> <key>md5sum</key> - <string>5e91fba63006aa5e6266496cf7497100</string> + <string>0d8aab394b4dc00aae44b4ada50c2d9f</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20090819a.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20091027.tar.bz2</uri> </map> <key>windows</key> <map> |