[Libreoffice-commits] .: 2 commits - avmedia/README avmedia/source sw/inc sw/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Jan 8 14:08:46 PST 2013


 avmedia/README                         |    5 +
 avmedia/source/gstreamer/gstwindow.cxx |  101 ++++-----------------------------
 avmedia/source/gstreamer/gstwindow.hxx |    1 
 sw/inc/unocrsrhelper.hxx               |   13 ++++
 sw/source/core/unocore/unoobj.cxx      |   87 +++++++++++++++++++++-------
 sw/source/core/unocore/unotext.cxx     |   74 ++++++++++++------------
 6 files changed, 138 insertions(+), 143 deletions(-)

New commits:
commit 1c010bd28862788038703ff7fdbbde1764cc7098
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Tue Jan 8 22:07:56 2013 +0000

    avmedia: cleanup unused listener logic in gstreamer, and update docs.
    
    Change-Id: Ic64a4e0ed1ad194d94f5451b60e926f13ad85578

diff --git a/avmedia/README b/avmedia/README
index eaa257d..ad8120b 100644
--- a/avmedia/README
+++ b/avmedia/README
@@ -3,3 +3,8 @@ Audio/Video media implementation.
 Provides per-platform implementations of multimedia functionality.
 Currently no stream API is provided, only a URI based one, so
 streaming has to be wrapped around it via temp files.
+
+Also provides (in source/framework/mediacontrol.cxx) an implementation
+of the graphical media playback control that appears in the toolbar /
+mediaobject bar when media is selected under the .uno:AVMediaToolBox
+item.
\ No newline at end of file
diff --git a/avmedia/source/gstreamer/gstwindow.cxx b/avmedia/source/gstreamer/gstwindow.cxx
index a95b42f..f1d4a96 100644
--- a/avmedia/source/gstreamer/gstwindow.cxx
+++ b/avmedia/source/gstreamer/gstwindow.cxx
@@ -29,10 +29,6 @@ using namespace ::com::sun::star;
 
 namespace avmedia { namespace gstreamer {
 
-// -----------
-// - statics -
-// -----------
-
 static ::osl::Mutex& ImplGetOwnStaticMutex()
 {
     static ::osl::Mutex* pMutex = NULL;
@@ -51,15 +47,11 @@ static ::osl::Mutex& ImplGetOwnStaticMutex()
     return *pMutex;
 }
 
-// ---------------
-// - Window -
-// ---------------
-
+// Window
 // ------------------------------------------------------------------------------
 
 Window::Window( const uno::Reference< lang::XMultiServiceFactory >& rxMgr, Player& rPlayer ) :
     mxMgr( rxMgr ),
-    maListeners( maMutex ),
     meZoomLevel( media::ZoomLevel_NOT_AVAILABLE ),
     mrPlayer( rPlayer ),
     mnPointerType( awt::SystemPointer::ARROW )
@@ -68,8 +60,6 @@ Window::Window( const uno::Reference< lang::XMultiServiceFactory >& rxMgr, Playe
 
 }
 
-// ------------------------------------------------------------------------------
-
 Window::~Window()
 {
 }
@@ -82,8 +72,6 @@ void SAL_CALL Window::update(  )
 {
 }
 
-// ------------------------------------------------------------------------------
-
 sal_Bool SAL_CALL Window::setZoomLevel( media::ZoomLevel eZoomLevel )
     throw (uno::RuntimeException)
 {
@@ -103,16 +91,12 @@ sal_Bool SAL_CALL Window::setZoomLevel( media::ZoomLevel eZoomLevel )
         return bRet;
 }
 
-// ------------------------------------------------------------------------------
-
 media::ZoomLevel SAL_CALL Window::getZoomLevel(  )
     throw (uno::RuntimeException)
 {
     return meZoomLevel;
 }
 
-// ------------------------------------------------------------------------------
-
 void SAL_CALL Window::setPointerType( sal_Int32 nPointerType )
     throw (uno::RuntimeException)
 {
@@ -127,8 +111,6 @@ void SAL_CALL Window::setPosSize( sal_Int32 /*X*/, sal_Int32 /*Y*/, sal_Int32 /*
 {
 }
 
-// ------------------------------------------------------------------------------
-
 awt::Rectangle SAL_CALL Window::getPosSize()
     throw (uno::RuntimeException)
 {
@@ -141,122 +123,79 @@ awt::Rectangle SAL_CALL Window::getPosSize()
     return aRet;
 }
 
-// ------------------------------------------------------------------------------
-
 void SAL_CALL Window::setVisible( sal_Bool /*bVisible*/ )
     throw (uno::RuntimeException)
 {
-
 }
 
-// ------------------------------------------------------------------------------
-
 void SAL_CALL Window::setEnable( sal_Bool /*bEnable*/ )
     throw (uno::RuntimeException)
 {
 }
 
-// ------------------------------------------------------------------------------
-
 void SAL_CALL Window::setFocus(  )
     throw (uno::RuntimeException)
 {
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addWindowListener( const uno::Reference< awt::XWindowListener >& xListener )
+void SAL_CALL Window::addWindowListener( const uno::Reference< awt::XWindowListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removeWindowListener( const uno::Reference< awt::XWindowListener >& xListener )
+void SAL_CALL Window::removeWindowListener( const uno::Reference< awt::XWindowListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addFocusListener( const uno::Reference< awt::XFocusListener >& xListener )
+void SAL_CALL Window::addFocusListener( const uno::Reference< awt::XFocusListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removeFocusListener( const uno::Reference< awt::XFocusListener >& xListener )
+void SAL_CALL Window::removeFocusListener( const uno::Reference< awt::XFocusListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addKeyListener( const uno::Reference< awt::XKeyListener >& xListener )
+void SAL_CALL Window::addKeyListener( const uno::Reference< awt::XKeyListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removeKeyListener( const uno::Reference< awt::XKeyListener >& xListener )
+void SAL_CALL Window::removeKeyListener( const uno::Reference< awt::XKeyListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addMouseListener( const uno::Reference< awt::XMouseListener >& xListener )
+void SAL_CALL Window::addMouseListener( const uno::Reference< awt::XMouseListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removeMouseListener( const uno::Reference< awt::XMouseListener >& xListener )
+void SAL_CALL Window::removeMouseListener( const uno::Reference< awt::XMouseListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& xListener )
+void SAL_CALL Window::addMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removeMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& xListener )
+void SAL_CALL Window::removeMouseMotionListener( const uno::Reference< awt::XMouseMotionListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addPaintListener( const uno::Reference< awt::XPaintListener >& xListener )
+void SAL_CALL Window::addPaintListener( const uno::Reference< awt::XPaintListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removePaintListener( const uno::Reference< awt::XPaintListener >& xListener )
+void SAL_CALL Window::removePaintListener( const uno::Reference< awt::XPaintListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
 // XComponent
@@ -267,20 +206,14 @@ void SAL_CALL Window::dispose(  )
 {
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::addEventListener( const uno::Reference< lang::XEventListener >& xListener )
+void SAL_CALL Window::addEventListener( const uno::Reference< lang::XEventListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.addInterface( getCppuType( &xListener ), xListener );
 }
 
-// ------------------------------------------------------------------------------
-
-void SAL_CALL Window::removeEventListener( const uno::Reference< lang::XEventListener >& xListener )
+void SAL_CALL Window::removeEventListener( const uno::Reference< lang::XEventListener >& )
     throw (uno::RuntimeException)
 {
-    maListeners.removeInterface( getCppuType( &xListener ), xListener );
 }
 
 // XServiceInfo
@@ -292,16 +225,12 @@ OUString SAL_CALL Window::getImplementationName(  )
     return OUString( AVMEDIA_GST_WINDOW_IMPLEMENTATIONNAME );
 }
 
-// ------------------------------------------------------------------------------
-
 sal_Bool SAL_CALL Window::supportsService( const OUString& ServiceName )
     throw (uno::RuntimeException)
 {
     return ServiceName == AVMEDIA_GST_WINDOW_SERVICENAME;
 }
 
-// ------------------------------------------------------------------------------
-
 uno::Sequence< OUString > SAL_CALL Window::getSupportedServiceNames(  )
     throw (uno::RuntimeException)
 {
diff --git a/avmedia/source/gstreamer/gstwindow.hxx b/avmedia/source/gstreamer/gstwindow.hxx
index f4472d5..f8014d7 100644
--- a/avmedia/source/gstreamer/gstwindow.hxx
+++ b/avmedia/source/gstreamer/gstwindow.hxx
@@ -86,7 +86,6 @@ private:
     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMgr;
 
     ::osl::Mutex                                maMutex;
-    ::cppu::OMultiTypeInterfaceContainerHelper  maListeners;
     ::com::sun::star::media::ZoomLevel          meZoomLevel;
     Player&                                     mrPlayer;
     int                                         mnPointerType;
commit ee0bf5d58bc59052923c4ced928a989956e71456
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Fri Dec 21 15:27:27 2012 +0000

    fdo#44736 - set and fetch multiple properties concurrently
    
    The domain-mapper calls SwXText::insertTextPortion very extensively
    accounting for about half of import time for large, lightly formatted
    text documents. The vast majority of the work is consumed managing
    char + para properties - so try to batch that, making it 70% faster
    for my lightly formatted test. Saves around 25% of load time for me.
    
    Change-Id: I2582adee1bf35b07b90af810cb0d19dadc1d348f

diff --git a/sw/inc/unocrsrhelper.hxx b/sw/inc/unocrsrhelper.hxx
index a5892f6..aa7fd4d 100644
--- a/sw/inc/unocrsrhelper.hxx
+++ b/sw/inc/unocrsrhelper.hxx
@@ -151,6 +151,19 @@ namespace SwUnoCursorHelper
                 ::com::sun::star::lang::IllegalArgumentException,
                 ::com::sun::star::lang::WrappedTargetException,
                 ::com::sun::star::uno::RuntimeException);
+    /// @param bTableMode: attributes should be applied to a table selection
+    void SetPropertyValues(
+            SwPaM& rPaM,
+            const SfxItemPropertySet & rPropSet,
+            const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > &
+            rPropertyValues,
+            const SetAttrMode nAttrMode = nsSetAttrMode::SETATTR_DEFAULT,
+            const bool bTableMode = false)
+        throw (::com::sun::star::beans::UnknownPropertyException,
+                ::com::sun::star::beans::PropertyVetoException,
+                ::com::sun::star::lang::IllegalArgumentException,
+                ::com::sun::star::lang::WrappedTargetException,
+                ::com::sun::star::uno::RuntimeException);
     ::com::sun::star::uno::Any  GetPropertyValue(
             SwPaM& rPaM,
             const SfxItemPropertySet & rPropSet,
diff --git a/sw/source/core/unocore/unoobj.cxx b/sw/source/core/unocore/unoobj.cxx
index 01318bb..f5736b8 100644
--- a/sw/source/core/unocore/unoobj.cxx
+++ b/sw/source/core/unocore/unoobj.cxx
@@ -1861,34 +1861,81 @@ throw (beans::UnknownPropertyException, beans::PropertyVetoException,
         lang::IllegalArgumentException, lang::WrappedTargetException,
         uno::RuntimeException)
 {
+    uno::Sequence< beans::PropertyValue > aValues(1);
+    aValues[0].Name = rPropertyName;
+    aValues[0].Value = rValue;
+    SetPropertyValues(rPaM, rPropSet, aValues, nAttrMode, bTableMode);
+}
+
+void SwUnoCursorHelper::SetPropertyValues(
+    SwPaM& rPaM, const SfxItemPropertySet& rPropSet,
+    const uno::Sequence< beans::PropertyValue > &rPropertyValues,
+    const SetAttrMode nAttrMode, const bool bTableMode)
+throw (beans::UnknownPropertyException, beans::PropertyVetoException,
+        lang::IllegalArgumentException, lang::WrappedTargetException,
+        uno::RuntimeException)
+{
+    if (!rPropertyValues.getLength())
+        return;
+
     SwDoc *const pDoc = rPaM.GetDoc();
-    SfxItemPropertySimpleEntry const*const pEntry =
-        rPropSet.getPropertyMap().getByName(rPropertyName);
-    if (!pEntry)
+    rtl::OUString aUnknownExMsg, aPropertyVetoExMsg;
+
+    // Build set of attributes we want to fetch
+    std::vector<sal_uInt16> aWhichPairs;
+    std::vector<SfxItemPropertySimpleEntry const*> aEntries;
+    aEntries.reserve(rPropertyValues.getLength());
+    for (sal_Int32 i = 0; i < rPropertyValues.getLength(); ++i)
     {
-        throw beans::UnknownPropertyException(
-            OUString(RTL_CONSTASCII_USTRINGPARAM("Unknown property: "))
-                + rPropertyName,
-            static_cast<cppu::OWeakObject *>(0));
+        const rtl::OUString &rPropertyName = rPropertyValues[i].Name;
+
+        SfxItemPropertySimpleEntry const* pEntry =
+            rPropSet.getPropertyMap().getByName(rPropertyName);
+
+        // Queue up any exceptions until the end ...
+        if (!pEntry)
+        {
+            aUnknownExMsg += "Unknown property: '" + rPropertyName + "' ";
+            break;
+        }
+        else if (pEntry->nFlags & beans::PropertyAttribute::READONLY)
+        {
+            aPropertyVetoExMsg += "Property is read-only: '" + rPropertyName + "' ";
+            break;
+        } else {
+// FIXME: we should have some nice way of merging ranges surely ?
+            aWhichPairs.push_back(pEntry->nWID);
+            aWhichPairs.push_back(pEntry->nWID);
+        }
+        aEntries.push_back(pEntry);
     }
 
-    if (pEntry->nFlags & beans::PropertyAttribute::READONLY)
+    if (!aWhichPairs.empty())
     {
-        throw beans::PropertyVetoException(
-            OUString(RTL_CONSTASCII_USTRINGPARAM("Property is read-only: "))
-                + rPropertyName,
-            static_cast<cppu::OWeakObject *>(0));
-    }
+        aWhichPairs.push_back(0); // terminate
+        SfxItemSet aItemSet(pDoc->GetAttrPool(), &aWhichPairs[0]);
 
-    SfxItemSet aItemSet( pDoc->GetAttrPool(), pEntry->nWID, pEntry->nWID );
-    SwUnoCursorHelper::GetCrsrAttr( rPaM, aItemSet );
+        // Fetch, overwrite, and re-set the attributes from the core
+        SwUnoCursorHelper::GetCrsrAttr( rPaM, aItemSet );
 
-    if (!SwUnoCursorHelper::SetCursorPropertyValue(
-                *pEntry, rValue, rPaM, aItemSet))
-    {
-        rPropSet.setPropertyValue(*pEntry, rValue, aItemSet );
+        for (sal_Int32 i = 0; ( i < rPropertyValues.getLength() &&
+                                i < (sal_Int32)aEntries.size() ); ++i)
+        {
+            const uno::Any &rValue = rPropertyValues[i].Value;
+            SfxItemPropertySimpleEntry const*const pEntry = aEntries[i];
+            if (!pEntry)
+                continue;
+            if (!SwUnoCursorHelper::SetCursorPropertyValue(*pEntry, rValue, rPaM, aItemSet))
+                rPropSet.setPropertyValue(*pEntry, rValue, aItemSet);
+        }
+
+        SwUnoCursorHelper::SetCrsrAttr(rPaM, aItemSet, nAttrMode, bTableMode);
     }
-    SwUnoCursorHelper::SetCrsrAttr(rPaM, aItemSet, nAttrMode, bTableMode);
+
+    if (!aUnknownExMsg.isEmpty())
+        throw beans::UnknownPropertyException(aUnknownExMsg, static_cast<cppu::OWeakObject *>(0));
+    if (!aPropertyVetoExMsg.isEmpty())
+        throw beans::PropertyVetoException(aPropertyVetoExMsg, static_cast<cppu::OWeakObject *>(0));
 }
 
 uno::Sequence< beans::PropertyState >
diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx
index d2e3add..8060a1b 100644
--- a/sw/source/core/unocore/unotext.cxx
+++ b/sw/source/core/unocore/unotext.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <stdio.h>
 
 #include <stdlib.h>
 
@@ -1309,6 +1310,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
     {
         aPam.Move( fnMoveBackward, fnGoNode );
     }
+#if 1
     if (rProperties.getLength())
     {
         // now set the properties
@@ -1345,6 +1347,26 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
             }
         }
     }
+#else
+    try
+    {
+        SfxItemPropertySet const*const pParaPropSet =
+            aSwMapProvider.GetPropertySet(PROPERTY_MAP_PARAGRAPH);
+        if (!bIllegalException)
+            SwUnoCursorHelper::SetPropertyValues(aPam, *pParaPropSet, rProperties);
+    }
+    catch (const lang::IllegalArgumentException& rIllegal)
+    {
+        sMessage = rIllegal.Message;
+        bIllegalException = true;
+    }
+    catch (const uno::RuntimeException& rRuntime)
+    {
+        sMessage = rRuntime.Message;
+        bRuntimeException = true;
+    }
+#endif
+
     m_pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_END, NULL);
     if (bIllegalException || bRuntimeException)
     {
@@ -1415,43 +1437,23 @@ throw (lang::IllegalArgumentException, uno::RuntimeException)
         pCursor->GetPoint()->nContent = nContentPos;
     }
 
-    if (rCharacterAndParagraphProperties.getLength())
+    try
     {
-        const SfxItemPropertyMap &rCursorMap =
-            aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_CURSOR)
-                ->getPropertyMap();
-        beans::PropertyValue const*const pValues =
-            rCharacterAndParagraphProperties.getConstArray();
-        SfxItemPropertySet const*const pCursorPropSet =
-            aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_CURSOR);
-        const sal_Int32 nLen(rCharacterAndParagraphProperties.getLength());
-        for (sal_Int32 nProp = 0; nProp < nLen; ++nProp)
-        {
-            if (!rCursorMap.getByName( pValues[nProp].Name ))
-            {
-                bIllegalException = true;
-                break;
-            }
-            try
-            {
-                SwUnoCursorHelper::SetPropertyValue(
-                    *pCursor, *pCursorPropSet,
-                    pValues[nProp].Name, pValues[nProp].Value,
-                    nsSetAttrMode::SETATTR_NOFORMATATTR);
-            }
-            catch (const lang::IllegalArgumentException& rIllegal)
-            {
-                sMessage = rIllegal.Message;
-                bIllegalException = true;
-                break;
-            }
-            catch (const uno::RuntimeException& rRuntime)
-            {
-                sMessage = rRuntime.Message;
-                bRuntimeException = true;
-                break;
-            }
-        }
+      SfxItemPropertySet const*const pCursorPropSet =
+          aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_CURSOR);
+      SwUnoCursorHelper::SetPropertyValues(*pCursor, *pCursorPropSet,
+                                           rCharacterAndParagraphProperties,
+                                           nsSetAttrMode::SETATTR_NOFORMATATTR);
+    }
+    catch (const lang::IllegalArgumentException& rIllegal)
+    {
+        sMessage = rIllegal.Message;
+        bIllegalException = true;
+    }
+    catch (const uno::RuntimeException& rRuntime)
+    {
+        sMessage = rRuntime.Message;
+        bRuntimeException = true;
     }
     m_pImpl->m_pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_INSERT, NULL);
     if (bIllegalException || bRuntimeException)


More information about the Libreoffice-commits mailing list