Automated merge with ssh://rick@hg.lindenlab.com/viewer/viewer-2-0/
commit
95ca60cafe
|
|
@ -43,6 +43,7 @@
|
|||
#include "llcheckboxctrl.h"
|
||||
#include "llcombobox.h"
|
||||
#include "lldraghandle.h"
|
||||
#include "llerror.h"
|
||||
#include "llfloaterbuildoptions.h"
|
||||
#include "llfloatermediasettings.h"
|
||||
#include "llfloateropenobject.h"
|
||||
|
|
@ -1122,11 +1123,27 @@ void LLFloaterTools::getMediaState()
|
|||
LLVOVolume* object = dynamic_cast<LLVOVolume*>(node->getObject());
|
||||
if (NULL != object)
|
||||
{
|
||||
if (!object->permModify() || object->isMediaDataBeingFetched())
|
||||
if (!object->permModify())
|
||||
{
|
||||
LL_INFOS("LLFloaterTools: media")
|
||||
<< "Selection not editable due to lack of modify permissions on object id "
|
||||
<< object->getID() << LL_ENDL;
|
||||
|
||||
editable = false;
|
||||
break;
|
||||
}
|
||||
// XXX DISABLE this for now, because when the fetch finally
|
||||
// does come in, the state of this floater doesn't properly
|
||||
// update. This needs more thought.
|
||||
// if (object->isMediaDataBeingFetched())
|
||||
// {
|
||||
// LL_INFOS("LLFloaterTools: media")
|
||||
// << "Selection not editable due to media data being fetched for object id "
|
||||
// << object->getID() << LL_ENDL;
|
||||
//
|
||||
// editable = false;
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
#include "llpanelprimmediacontrols.h"
|
||||
#include "llpluginclassmedia.h"
|
||||
#include "llprogressbar.h"
|
||||
#include "llstring.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerparcelmgr.h"
|
||||
#include "llviewermedia.h"
|
||||
|
|
@ -92,6 +93,7 @@ LLPanelPrimMediaControls::LLPanelPrimMediaControls() :
|
|||
mCommitCallbackRegistrar.add("MediaCtrl.Forward", boost::bind(&LLPanelPrimMediaControls::onClickForward, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.Home", boost::bind(&LLPanelPrimMediaControls::onClickHome, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.Stop", boost::bind(&LLPanelPrimMediaControls::onClickStop, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.MediaStop", boost::bind(&LLPanelPrimMediaControls::onClickMediaStop, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.Reload", boost::bind(&LLPanelPrimMediaControls::onClickReload, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.Play", boost::bind(&LLPanelPrimMediaControls::onClickPlay, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.Pause", boost::bind(&LLPanelPrimMediaControls::onClickPause, this));
|
||||
|
|
@ -102,6 +104,8 @@ LLPanelPrimMediaControls::LLPanelPrimMediaControls() :
|
|||
mCommitCallbackRegistrar.add("MediaCtrl.CommitVolumeUp", boost::bind(&LLPanelPrimMediaControls::onCommitVolumeUp, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.CommitVolumeDown", boost::bind(&LLPanelPrimMediaControls::onCommitVolumeDown, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.ToggleMute", boost::bind(&LLPanelPrimMediaControls::onToggleMute, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.SkipBack", boost::bind(&LLPanelPrimMediaControls::onClickSkipBack, this));
|
||||
mCommitCallbackRegistrar.add("MediaCtrl.SkipForward", boost::bind(&LLPanelPrimMediaControls::onClickSkipForward, this));
|
||||
|
||||
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_prim_media_controls.xml");
|
||||
mInactivityTimer.reset();
|
||||
|
|
@ -135,6 +139,8 @@ BOOL LLPanelPrimMediaControls::postBuild()
|
|||
mMediaAddress = getChild<LLUICtrl>("media_address_url");
|
||||
mMediaPlaySliderPanel = getChild<LLUICtrl>("media_play_position");
|
||||
mMediaPlaySliderCtrl = getChild<LLUICtrl>("media_play_slider");
|
||||
mSkipFwdCtrl = getChild<LLUICtrl>("skip_forward");
|
||||
mSkipBackCtrl = getChild<LLUICtrl>("skip_back");
|
||||
mVolumeCtrl = getChild<LLUICtrl>("media_volume");
|
||||
mVolumeBtn = getChild<LLButton>("media_volume_button");
|
||||
mVolumeUpCtrl = getChild<LLUICtrl>("volume_up");
|
||||
|
|
@ -145,6 +151,7 @@ BOOL LLPanelPrimMediaControls::postBuild()
|
|||
mLeftBookend = getChild<LLUICtrl>("left_bookend");
|
||||
mRightBookend = getChild<LLUICtrl>("right_bookend");
|
||||
mBackgroundImage = LLUI::getUIImage(getString("control_background_image_name"));
|
||||
LLStringUtil::convertToF32(getString("skip_step"), mSkipStep);
|
||||
|
||||
// These are currently removed...but getChild creates a "dummy" widget.
|
||||
// This class handles them missing.
|
||||
|
|
@ -329,12 +336,17 @@ void LLPanelPrimMediaControls::updateShape()
|
|||
mReloadCtrl->setVisible(FALSE);
|
||||
mMediaStopCtrl->setVisible(has_focus);
|
||||
mHomeCtrl->setVisible(FALSE);
|
||||
mBackCtrl->setEnabled(has_focus);
|
||||
mFwdCtrl->setEnabled(has_focus);
|
||||
// No nav controls
|
||||
mBackCtrl->setVisible(FALSE);
|
||||
mFwdCtrl->setEnabled(FALSE);
|
||||
mMediaAddressCtrl->setVisible(false);
|
||||
mMediaAddressCtrl->setEnabled(false);
|
||||
mMediaPlaySliderPanel->setVisible(has_focus && !mini_controls);
|
||||
mMediaPlaySliderPanel->setEnabled(has_focus && !mini_controls);
|
||||
mSkipFwdCtrl->setVisible(has_focus && !mini_controls);
|
||||
mSkipFwdCtrl->setEnabled(has_focus && !mini_controls);
|
||||
mSkipBackCtrl->setVisible(has_focus && !mini_controls);
|
||||
mSkipBackCtrl->setEnabled(has_focus && !mini_controls);
|
||||
|
||||
mVolumeCtrl->setVisible(has_focus);
|
||||
mVolumeUpCtrl->setVisible(has_focus);
|
||||
|
|
@ -435,6 +447,10 @@ void LLPanelPrimMediaControls::updateShape()
|
|||
mMediaAddressCtrl->setEnabled(has_focus && !mini_controls);
|
||||
mMediaPlaySliderPanel->setVisible(FALSE);
|
||||
mMediaPlaySliderPanel->setEnabled(FALSE);
|
||||
mSkipFwdCtrl->setVisible(FALSE);
|
||||
mSkipFwdCtrl->setEnabled(FALSE);
|
||||
mSkipBackCtrl->setVisible(FALSE);
|
||||
mSkipBackCtrl->setEnabled(FALSE);
|
||||
|
||||
mVolumeCtrl->setVisible(FALSE);
|
||||
mVolumeUpCtrl->setVisible(FALSE);
|
||||
|
|
@ -789,7 +805,7 @@ void LLPanelPrimMediaControls::onClickForward()
|
|||
focusOnTarget();
|
||||
|
||||
LLViewerMediaImpl* impl = getTargetMediaImpl();
|
||||
|
||||
|
||||
if (impl)
|
||||
{
|
||||
impl->navigateForward();
|
||||
|
|
@ -860,18 +876,55 @@ void LLPanelPrimMediaControls::onClickStop()
|
|||
|
||||
LLViewerMediaImpl* impl = getTargetMediaImpl();
|
||||
|
||||
if(impl)
|
||||
{
|
||||
impl->navigateStop();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPrimMediaControls::onClickMediaStop()
|
||||
{
|
||||
focusOnTarget();
|
||||
|
||||
LLViewerMediaImpl* impl = getTargetMediaImpl();
|
||||
|
||||
if(impl)
|
||||
{
|
||||
impl->stop();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPrimMediaControls::onClickSkipBack()
|
||||
{
|
||||
focusOnTarget();
|
||||
|
||||
LLViewerMediaImpl* impl =getTargetMediaImpl();
|
||||
|
||||
if (impl)
|
||||
{
|
||||
impl->skipBack(mSkipStep);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPrimMediaControls::onClickSkipForward()
|
||||
{
|
||||
focusOnTarget();
|
||||
|
||||
LLViewerMediaImpl* impl = getTargetMediaImpl();
|
||||
|
||||
if (impl)
|
||||
{
|
||||
impl->skipForward(mSkipStep);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPrimMediaControls::onClickZoom()
|
||||
{
|
||||
focusOnTarget();
|
||||
|
||||
nextZoomLevel();
|
||||
}
|
||||
|
||||
void LLPanelPrimMediaControls::nextZoomLevel()
|
||||
{
|
||||
int index = 0;
|
||||
|
|
|
|||
|
|
@ -95,6 +95,9 @@ private:
|
|||
void onClickPause();
|
||||
void onClickStop();
|
||||
void onClickZoom();
|
||||
void onClickSkipBack();
|
||||
void onClickSkipForward();
|
||||
void onClickMediaStop();
|
||||
void onCommitURL();
|
||||
|
||||
void updateZoom();
|
||||
|
|
@ -137,6 +140,8 @@ private:
|
|||
LLUICtrl *mHomeCtrl;
|
||||
LLUICtrl *mUnzoomCtrl;
|
||||
LLUICtrl *mOpenCtrl;
|
||||
LLUICtrl *mSkipBackCtrl;
|
||||
LLUICtrl *mSkipFwdCtrl;
|
||||
LLUICtrl *mZoomCtrl;
|
||||
LLPanel *mMediaProgressPanel;
|
||||
LLProgressBar *mMediaProgressBar;
|
||||
|
|
@ -154,6 +159,7 @@ private:
|
|||
LLUICtrl *mLeftBookend;
|
||||
LLUICtrl *mRightBookend;
|
||||
LLUIImage* mBackgroundImage;
|
||||
F32 mSkipStep;
|
||||
|
||||
LLUICtrl *mMediaPanelScroll;
|
||||
LLButton *mScrollUpCtrl;
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ viewer_media_t LLViewerMedia::newMediaImpl(
|
|||
}
|
||||
else
|
||||
{
|
||||
media_impl->stop();
|
||||
media_impl->unload();
|
||||
media_impl->mTextureId = texture_id;
|
||||
media_impl->mMediaWidth = media_width;
|
||||
media_impl->mMediaHeight = media_height;
|
||||
|
|
@ -1092,15 +1092,7 @@ void LLViewerMediaImpl::stop()
|
|||
{
|
||||
if(mMediaSource)
|
||||
{
|
||||
if(mMediaSource->pluginSupportsMediaBrowser())
|
||||
{
|
||||
mMediaSource->browse_stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
mMediaSource->stop();
|
||||
}
|
||||
|
||||
mMediaSource->stop();
|
||||
// destroyMediaSource();
|
||||
}
|
||||
}
|
||||
|
|
@ -1132,6 +1124,40 @@ void LLViewerMediaImpl::seek(F32 time)
|
|||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::skipBack(F32 step_scale)
|
||||
{
|
||||
if(mMediaSource)
|
||||
{
|
||||
if(mMediaSource->pluginSupportsMediaTime())
|
||||
{
|
||||
F64 back_step = mMediaSource->getCurrentTime() - (mMediaSource->getDuration()*step_scale);
|
||||
if(back_step < 0.0)
|
||||
{
|
||||
back_step = 0.0;
|
||||
}
|
||||
mMediaSource->seek(back_step);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::skipForward(F32 step_scale)
|
||||
{
|
||||
if(mMediaSource)
|
||||
{
|
||||
if(mMediaSource->pluginSupportsMediaTime())
|
||||
{
|
||||
F64 forward_step = mMediaSource->getCurrentTime() + (mMediaSource->getDuration()*step_scale);
|
||||
if(forward_step > mMediaSource->getDuration())
|
||||
{
|
||||
forward_step = mMediaSource->getDuration();
|
||||
}
|
||||
mMediaSource->seek(forward_step);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LLViewerMediaImpl::setVolume(F32 volume)
|
||||
{
|
||||
|
|
@ -1339,21 +1365,7 @@ void LLViewerMediaImpl::navigateBack()
|
|||
{
|
||||
if (mMediaSource)
|
||||
{
|
||||
if(mMediaSource->pluginSupportsMediaTime())
|
||||
{
|
||||
F64 step_scale = 0.02; // temp , can be changed
|
||||
F64 back_step = mMediaSource->getCurrentTime() - (mMediaSource->getDuration()*step_scale);
|
||||
if(back_step < 0.0)
|
||||
{
|
||||
back_step = 0.0;
|
||||
}
|
||||
mMediaSource->seek(back_step);
|
||||
//mMediaSource->start(-2.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
mMediaSource->browse_back();
|
||||
}
|
||||
mMediaSource->browse_back();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1362,21 +1374,7 @@ void LLViewerMediaImpl::navigateForward()
|
|||
{
|
||||
if (mMediaSource)
|
||||
{
|
||||
if(mMediaSource->pluginSupportsMediaTime())
|
||||
{
|
||||
F64 step_scale = 0.02; // temp , can be changed
|
||||
F64 forward_step = mMediaSource->getCurrentTime() + (mMediaSource->getDuration()*step_scale);
|
||||
if(forward_step > mMediaSource->getDuration())
|
||||
{
|
||||
forward_step = mMediaSource->getDuration();
|
||||
}
|
||||
mMediaSource->seek(forward_step);
|
||||
//mMediaSource->start(2.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
mMediaSource->browse_forward();
|
||||
}
|
||||
mMediaSource->browse_forward();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1525,7 +1523,6 @@ void LLViewerMediaImpl::navigateStop()
|
|||
{
|
||||
mMediaSource->browse_stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@ public:
|
|||
void pause();
|
||||
void start();
|
||||
void seek(F32 time);
|
||||
void skipBack(F32 step_scale);
|
||||
void skipForward(F32 step_scale);
|
||||
void setVolume(F32 volume);
|
||||
void updateVolume();
|
||||
F32 getVolume();
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
|
|||
LL_DEBUGS("Media") << "new media impl with mime type " << mime_type << ", url " << media_url << LL_ENDL;
|
||||
|
||||
// Delete the old one first so they don't fight over the texture.
|
||||
sMediaImpl->stop();
|
||||
sMediaImpl = NULL;
|
||||
|
||||
sMediaImpl = LLViewerMedia::newMediaImpl(
|
||||
placeholder_texture_id,
|
||||
|
|
@ -261,8 +261,7 @@ void LLViewerParcelMedia::stop()
|
|||
// We need to remove the media HUD if it is up.
|
||||
LLViewerMediaFocus::getInstance()->clearFocus();
|
||||
|
||||
// This will kill the media instance.
|
||||
sMediaImpl->stop();
|
||||
// This will unload & kill the media instance.
|
||||
sMediaImpl = NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
mouse_opaque="false"
|
||||
width="800">
|
||||
<string name="control_background_image_name">Inspector_Background</string>
|
||||
<string name="skip_step">0.2</string>
|
||||
<panel
|
||||
name="media_region"
|
||||
bottom="125"
|
||||
|
|
@ -86,7 +87,7 @@
|
|||
auto_resize="false"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
tool_tip="Step back"
|
||||
tool_tip="Navigate back"
|
||||
width="22"
|
||||
left="0"
|
||||
top_delta="4">
|
||||
|
|
@ -111,7 +112,7 @@
|
|||
hover_glow_amount="0.15"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
tool_tip="Step forward"
|
||||
tool_tip="Navigate forward"
|
||||
top_delta="0"
|
||||
min_width="22"
|
||||
width="22">
|
||||
|
|
@ -165,7 +166,7 @@
|
|||
min_width="22"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="MediaCtrl.Stop" />
|
||||
function="MediaCtrl.MediaStop" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
|
|
@ -359,6 +360,55 @@ function="MediaCtrl.CommitURL" />
|
|||
function="MediaCtrl.JumpProgress" />
|
||||
</slider_bar>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
name="skip_back"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
layout="topleft"
|
||||
min_width="22"
|
||||
width="22">
|
||||
<button
|
||||
image_overlay="SkipBackward_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
hover_glow_amount="0.15"
|
||||
auto_resize="false"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
tool_tip="Step back"
|
||||
top="-14"
|
||||
width="22"
|
||||
left="0">
|
||||
<button.commit_callback
|
||||
function="MediaCtrl.SkipBack" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
name="skip_forward"
|
||||
auto_resize="false"
|
||||
user_resize="false"
|
||||
layout="topleft"
|
||||
min_width="22"
|
||||
width="22">
|
||||
<button
|
||||
image_overlay="SkipForward_Off"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
hover_glow_amount="0.15"
|
||||
height="22"
|
||||
layout="topleft"
|
||||
tool_tip="Step forward"
|
||||
top="-14"
|
||||
min_width="22"
|
||||
width="22">
|
||||
<button.commit_callback
|
||||
function="MediaCtrl.SkipForward" />
|
||||
</button>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
name="media_volume"
|
||||
auto_resize="false"
|
||||
|
|
|
|||
Loading…
Reference in New Issue