Skip to content
Snippets Groups Projects
Commit 370a8592 authored by Loren Shih's avatar Loren Shih
Browse files

automated merge viewer2.0->viewer2.0

parents 79542fe8 832f135f
No related branches found
No related tags found
No related merge requests found
......@@ -48,12 +48,15 @@
#include "llviewerwindow.h"
#include "llfocusmgr.h"
#include "llcallbacklist.h"
#include "llparcel.h"
#include "llaudioengine.h" // for gAudiop
#include "llevent.h" // LLSimpleListener
#include "llnotificationsutil.h"
#include "lluuid.h"
#include "llkeyboard.h"
#include "llmutelist.h"
#include "llfirstuse.h"
#include <boost/bind.hpp> // for SkinFolder listener
#include <boost/signals2.hpp>
......@@ -708,6 +711,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
std::vector<LLViewerMediaImpl*> proximity_order;
bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");
bool needs_first_run = LLViewerMedia::needsMediaFirstRun();
U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal");
U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal");
U32 max_low = gSavedSettings.getU32("PluginInstancesLow");
......@@ -822,6 +827,21 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
new_priority = LLPluginClassMedia::PRIORITY_LOW;
}
if(!inworld_media_enabled)
{
// If inworld media is locked out, force all inworld media to stay unloaded.
if(!pimpl->getUsedInUI())
{
new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
if(needs_first_run)
{
// Don't do this more than once in this loop.
needs_first_run = false;
LLViewerMedia::displayMediaFirstRun();
}
}
}
pimpl->setPriority(new_priority);
if(pimpl->getUsedInUI())
......@@ -888,6 +908,61 @@ void LLViewerMedia::cleanupClass()
gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);
}
//////////////////////////////////////////////////////////////////////////////////////////
// static
bool LLViewerMedia::needsMediaFirstRun()
{
return gWarningSettings.getBOOL("FirstStreamingMedia");
}
//////////////////////////////////////////////////////////////////////////////////////////
// static
void LLViewerMedia::displayMediaFirstRun()
{
gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
boost::bind(firstRunCallback, _1, _2));
}
//////////////////////////////////////////////////////////////////////////////////////////
// static
bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option == 0)
{
// user has elected to automatically play media.
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
if (parcel)
{
// play media right now, if available
LLViewerParcelMedia::play(parcel);
// play music right now, if available
std::string music_url = parcel->getMusicURL();
if (gAudiop && !music_url.empty())
gAudiop->startInternetStream(music_url);
}
}
else
{
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE);
gSavedSettings.setBOOL("AudioStreamingMedia", FALSE);
gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
}
return false;
}
//////////////////////////////////////////////////////////////////////////////////////////
// LLViewerMediaImpl
//////////////////////////////////////////////////////////////////////////////////////////
......
......@@ -115,6 +115,12 @@ class LLViewerMedia
// This is the comparitor used to sort the list.
static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2);
// For displaying the media first-run dialog.
static bool needsMediaFirstRun();
static void displayMediaFirstRun();
static bool firstRunCallback(const LLSD& notification, const LLSD& response);
};
// Implementation functions not exported into header file
......
......@@ -56,10 +56,6 @@ LLUUID LLViewerParcelMedia::sMediaRegionID;
viewer_media_t LLViewerParcelMedia::sMediaImpl;
// Local functions
bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel);
// static
void LLViewerParcelMedia::initClass()
{
......@@ -112,12 +108,10 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
// First use warning
if( (!mediaUrl.empty() ||
!parcel->getMusicURL().empty())
&& gWarningSettings.getBOOL("FirstStreamingMedia") )
&& LLViewerMedia::needsMediaFirstRun())
{
LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
boost::bind(callback_play_media, _1, _2, parcel));
LLViewerMedia::displayMediaFirstRun();
return;
}
// if we have a current (link sharing) url, use it instead
......@@ -591,36 +585,6 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
};
}
bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option == 0)
{
// user has elected to automatically play media.
gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
if(!gSavedSettings.getBOOL("AudioStreamingMedia"))
gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
// play media right now, if available
LLViewerParcelMedia::play(parcel);
// play music right now, if available
if (parcel)
{
std::string music_url = parcel->getMusicURL();
if (gAudiop && !music_url.empty())
gAudiop->startInternetStream(music_url);
}
}
else
{
gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
}
gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
return false;
}
// TODO: observer
/*
void LLViewerParcelMediaNavigationObserver::onNavigateComplete( const EventType& event_in )
......
......@@ -5,6 +5,9 @@
height="108"
layout="topleft"
name="whitelist_entry"
single_instance="true"
help_topic="whitelist_entry"
title="WHITELIST ENTRY"
width="390">
<text type="string" length="1" bottom="20" follows="top|left" height="15" layout="topleft"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment