diff options
Diffstat (limited to 'avmedia/source/framework')
-rw-r--r-- | avmedia/source/framework/mediacontrol.cxx | 4 | ||||
-rw-r--r-- | avmedia/source/framework/mediaitem.cxx | 13 | ||||
-rw-r--r-- | avmedia/source/framework/mediaplayer.cxx | 4 | ||||
-rw-r--r-- | avmedia/source/framework/soundhandler.cxx | 9 |
4 files changed, 20 insertions, 10 deletions
diff --git a/avmedia/source/framework/mediacontrol.cxx b/avmedia/source/framework/mediacontrol.cxx index fc67309f62b5..7facb1f26f1a 100644 --- a/avmedia/source/framework/mediacontrol.cxx +++ b/avmedia/source/framework/mediacontrol.cxx @@ -494,11 +494,11 @@ IMPL_LINK( MediaControl, implSelectHdl, ToolBox*, p ) if (::avmedia::MediaWindow::executeMediaURLDialog( GetParent(), aURL, 0)) { - if( !::avmedia::MediaWindow::isMediaURL( aURL, true ) ) + if( !::avmedia::MediaWindow::isMediaURL( aURL, ""/*TODO?*/, true ) ) ::avmedia::MediaWindow::executeFormatErrorBox( this ); else { - aExecItem.setURL( aURL, "" ); + aExecItem.setURL( aURL, "", ""/*TODO?*/ ); aExecItem.setState( MEDIASTATE_PLAY ); } } diff --git a/avmedia/source/framework/mediaitem.cxx b/avmedia/source/framework/mediaitem.cxx index 98359b1b0411..b57abfecb9ce 100644 --- a/avmedia/source/framework/mediaitem.cxx +++ b/avmedia/source/framework/mediaitem.cxx @@ -53,6 +53,7 @@ struct MediaItem::Impl { OUString m_URL; OUString m_TempFileURL; + OUString m_Referer; sal_uInt32 m_nMaskSet; MediaState m_eState; double m_fTime; @@ -76,6 +77,7 @@ struct MediaItem::Impl Impl(Impl const& rOther) : m_URL( rOther.m_URL ) , m_TempFileURL( rOther.m_TempFileURL ) + , m_Referer( rOther.m_Referer ) , m_nMaskSet( rOther.m_nMaskSet ) , m_eState( rOther.m_eState ) , m_fTime( rOther.m_fTime ) @@ -118,6 +120,7 @@ int MediaItem::operator==( const SfxPoolItem& rItem ) const MediaItem const& rOther(static_cast< const MediaItem& >(rItem)); return m_pImpl->m_nMaskSet == rOther.m_pImpl->m_nMaskSet && m_pImpl->m_URL == rOther.m_pImpl->m_URL + && m_pImpl->m_Referer == rOther.m_pImpl->m_Referer && m_pImpl->m_eState == rOther.m_pImpl->m_eState && m_pImpl->m_fDuration == rOther.m_pImpl->m_fDuration && m_pImpl->m_fTime == rOther.m_pImpl->m_fTime @@ -202,7 +205,7 @@ void MediaItem::merge( const MediaItem& rMediaItem ) const sal_uInt32 nMaskSet = rMediaItem.getMaskSet(); if( AVMEDIA_SETMASK_URL & nMaskSet ) - setURL( rMediaItem.getURL(), rMediaItem.getTempURL() ); + setURL( rMediaItem.getURL(), rMediaItem.getTempURL(), rMediaItem.getReferer() ); if( AVMEDIA_SETMASK_STATE & nMaskSet ) setState( rMediaItem.getState() ); @@ -235,11 +238,12 @@ sal_uInt32 MediaItem::getMaskSet() const //------------------------------------------------------------------------ -void MediaItem::setURL( const OUString& rURL, const OUString& rTempURL ) +void MediaItem::setURL( const OUString& rURL, const OUString& rTempURL, const OUString& rReferer ) { m_pImpl->m_nMaskSet |= AVMEDIA_SETMASK_URL; m_pImpl->m_URL = rURL; m_pImpl->m_TempFileURL = rTempURL; + m_pImpl->m_Referer = rReferer; } //------------------------------------------------------------------------ @@ -254,6 +258,11 @@ const OUString& MediaItem::getTempURL() const return m_pImpl->m_TempFileURL; } +const OUString& MediaItem::getReferer() const +{ + return m_pImpl->m_Referer; +} + //------------------------------------------------------------------------ void MediaItem::setState( MediaState eState ) diff --git a/avmedia/source/framework/mediaplayer.cxx b/avmedia/source/framework/mediaplayer.cxx index e5b35d308b51..bef6fc6cdef7 100644 --- a/avmedia/source/framework/mediaplayer.cxx +++ b/avmedia/source/framework/mediaplayer.cxx @@ -116,11 +116,11 @@ void MediaFloater::ToggleFloatingMode() // ----------------------------------------------------------------------------- -void MediaFloater::setURL( const OUString& rURL, bool bPlayImmediately ) +void MediaFloater::setURL( const OUString& rURL, const OUString& rReferer, bool bPlayImmediately ) { if( mpMediaWindow ) { - mpMediaWindow->setURL( rURL ); + mpMediaWindow->setURL( rURL, rReferer ); if( mpMediaWindow->isValid() && bPlayImmediately ) mpMediaWindow->start(); diff --git a/avmedia/source/framework/soundhandler.cxx b/avmedia/source/framework/soundhandler.cxx index 06658e9ad948..e56f86b7822d 100644 --- a/avmedia/source/framework/soundhandler.cxx +++ b/avmedia/source/framework/soundhandler.cxx @@ -264,11 +264,11 @@ void SAL_CALL SoundHandler::dispatchWithNotification(const css::util::URL& // SAFE { const ::osl::MutexGuard aLock( m_aLock ); + utl::MediaDescriptor aDescriptor(lDescriptor); + { //close streams otherwise on windows we can't reopen the file in the //media player when we pass the url to directx as it'll already be open - utl::MediaDescriptor aDescriptor(lDescriptor); - css::uno::Reference< css::io::XInputStream > xInputStream = aDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_INPUTSTREAM(), css::uno::Reference< css::io::XInputStream >()); @@ -290,7 +290,7 @@ void SAL_CALL SoundHandler::dispatchWithNotification(const css::util::URL& try { m_bError = false; - m_xPlayer.set( avmedia::MediaWindow::createPlayer( aURL.Complete ), css::uno::UNO_QUERY_THROW ); + m_xPlayer.set( avmedia::MediaWindow::createPlayer( aURL.Complete, aDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_REFERRER(), OUString()) ), css::uno::UNO_QUERY_THROW ); // OK- we can start async playing ... // Count this request and initialize self-holder against dieing by uno ref count ... m_xSelfHold = css::uno::Reference< css::uno::XInterface >(static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY); @@ -346,10 +346,11 @@ OUString SAL_CALL SoundHandler::detect( css::uno::Sequence< css::beans::Property // Analyze given descriptor to find filename or input stream or ... utl::MediaDescriptor aDescriptor(lDescriptor); OUString sURL = aDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_URL(), OUString()); + OUString sReferer = aDescriptor.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_REFERRER(), OUString()); if ( (sURL.getLength() ) && - (avmedia::MediaWindow::isMediaURL(sURL)) + (avmedia::MediaWindow::isMediaURL(sURL, sReferer)) ) { // If the file type is supported depends on the OS, so... |