Automated merge with ssh://rick@hg.lindenlab.com/viewer/viewer-2-0/

meow-7.2.2
Rick Pasetto 2009-11-20 13:12:50 -08:00
commit 95ca60cafe
7 changed files with 175 additions and 51 deletions

View File

@ -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;
// }
}
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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();
}
}
//////////////////////////////////////////////////////////////////////////////////////////

View File

@ -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();

View File

@ -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;
}

View File

@ -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"