rpms/openoffice.org/devel openoffice.org.spec, 1.2273, 1.2274 workspace.vcl113.patch, 1.3, 1.4 openoffice.org-3.3.0.ooo113117.extensions.broken.scanner.shutdown.patch, 1.1, NONE
Caolan McNamara
caolanm at fedoraproject.org
Tue Jul 13 10:18:21 UTC 2010
Author: caolanm
Update of /cvs/pkgs/rpms/openoffice.org/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv21975
Modified Files:
openoffice.org.spec workspace.vcl113.patch
Removed Files:
openoffice.org-3.3.0.ooo113117.extensions.broken.scanner.shutdown.patch
Log Message:
broken scanner merged into workspace.vcl113
Index: openoffice.org.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/devel/openoffice.org.spec,v
retrieving revision 1.2273
retrieving revision 1.2274
diff -u -p -r1.2273 -r1.2274
--- openoffice.org.spec 13 Jul 2010 10:16:52 -0000 1.2273
+++ openoffice.org.spec 13 Jul 2010 10:18:21 -0000 1.2274
@@ -119,7 +119,6 @@ Patch44: openoffice.org-3.3.0.oooXXXXX.o
Patch45: openoffice.org-3.3.0.oooXXXXX.afms.buildtype.patch
Patch46: workspace.native317.patch
Patch47: workspace.sb126.patch
-Patch48: openoffice.org-3.3.0.ooo113117.extensions.broken.scanner.shutdown.patch
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%define instdir %{_libdir}
@@ -1655,7 +1654,6 @@ cp -p %{SOURCE5} external/unowinreg/unow
%patch45 -p0 -b .oooXXXXX.afms.buildtype.patch
%patch46 -p1 -b .workspace.native317.patch
%patch47 -p1 -b .workspace.sb126.patch
-%patch48 -p0 -b .ooo113117.extensions.broken.scanner.shutdown.patch
%build
echo build start time is `date`, diskspace: `df -h . | tail -n 1`
workspace.vcl113.patch:
extensions/source/scanner/scanner.cxx | 3 -
extensions/source/scanner/scanner.hxx | 5 +
extensions/source/scanner/scanunx.cxx | 101 ++++++++++++++++++++++------------
extensions/source/scanner/scanwin.cxx | 12 ++--
vcl/inc/vcl/salgdi.hxx | 2
vcl/source/gdi/outdev3.cxx | 19 ++++++
vcl/source/glyphs/gcach_ftyp.cxx | 3 +
vcl/unx/headless/svpgdi.hxx | 2
vcl/unx/headless/svppspgraphics.cxx | 2
vcl/unx/headless/svppspgraphics.hxx | 2
vcl/unx/headless/svptext.cxx | 9 ++-
vcl/unx/inc/pspgraphics.h | 2
vcl/unx/inc/salgdi.h | 2
vcl/unx/source/gdi/pspgraphics.cxx | 2
vcl/unx/source/gdi/salgdi3.cxx | 13 ++--
15 files changed, 122 insertions(+), 57 deletions(-)
Index: workspace.vcl113.patch
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/devel/workspace.vcl113.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- workspace.vcl113.patch 21 Jun 2010 12:25:46 -0000 1.3
+++ workspace.vcl113.patch 13 Jul 2010 10:18:21 -0000 1.4
@@ -182,3 +182,309 @@ diff -ru vcl.orig/source/glyphs/gcach_ft
}
// -----------------------------------------------------------------------
+diff -ru extensions.orig/source/scanner/scanner.cxx extensions/source/scanner/scanner.cxx
+--- extensions.orig/source/scanner/scanner.cxx 2010-07-12 20:17:35.000000000 +0100
++++ extensions/source/scanner/scanner.cxx 2010-07-13 10:17:25.000000000 +0100
+@@ -43,13 +43,14 @@
+ ScannerManager::ScannerManager() :
+ mpData( NULL )
+ {
++ AcquireData();
+ }
+
+ // -----------------------------------------------------------------------------
+
+ ScannerManager::~ScannerManager()
+ {
+- DestroyData();
++ ReleaseData();
+ }
+
+ // -----------------------------------------------------------------------------
+diff -ru extensions.orig/source/scanner/scanner.hxx extensions/source/scanner/scanner.hxx
+--- extensions.orig/source/scanner/scanner.hxx 2010-07-12 20:17:35.000000000 +0100
++++ extensions/source/scanner/scanner.hxx 2010-07-13 09:27:57.000000000 +0100
+@@ -73,7 +73,8 @@
+ vos::OMutex maProtector;
+ void* mpData;
+
+- void DestroyData();
++ void AcquireData();
++ void ReleaseData();
+
+ public:
+
+@@ -105,7 +106,7 @@
+ void Unlock() { maProtector.release(); }
+
+ void* GetData() const { return mpData; }
+- void SetData( void* pData ) { DestroyData(); mpData = pData; }
++ void SetData( void* pData ) { ReleaseData(); mpData = pData; }
+ };
+
+ // -----------------------------------------------------------------------------
+diff -ru extensions.orig/source/scanner/scanunx.cxx extensions/source/scanner/scanunx.cxx
+--- extensions.orig/source/scanner/scanunx.cxx 2010-07-12 20:17:35.000000000 +0100
++++ extensions/source/scanner/scanunx.cxx 2010-07-13 10:16:41.000000000 +0100
+@@ -31,6 +31,7 @@
+ #include <sanedlg.hxx>
+ #include <vos/thread.hxx>
+ #include <tools/list.hxx>
++#include <boost/shared_ptr.hpp>
+
+ #if OSL_DEBUG_LEVEL > 1
+ #include <stdio.h>
+@@ -113,12 +114,41 @@
+ vos::OMutex m_aProtector;
+ ScanError m_nError;
+ bool m_bBusy;
++
++ SaneHolder() : m_nError(ScanError_ScanErrorNone), m_bBusy(false) {}
+ };
+
+-DECLARE_LIST( SaneHolderList, SaneHolder* )
++namespace
++{
++ typedef std::vector< boost::shared_ptr<SaneHolder> > sanevec;
++ class allSanes
++ {
++ private:
++ int mnRefCount;
++ public:
++ sanevec m_aSanes;
++ allSanes() : mnRefCount(0) {}
++ void acquire();
++ void release();
++ };
++
++ void allSanes::acquire()
++ {
++ ++mnRefCount;
++ }
++
++ void allSanes::release()
++ {
++ // was unused, now because of i99835: "Scanning interface not SANE API
++ // compliant" destroy all SaneHolder to get Sane Dtor called
++ --mnRefCount;
++ if (!mnRefCount)
++ m_aSanes.clear();
++ }
+
+-static SaneHolderList allSanes;
+-static vos::OMutex aSaneProtector;
++ struct theSaneProtector : public rtl::Static<vos::OMutex, theSaneProtector> {};
++ struct theSanes : public rtl::Static<allSanes, theSanes> {};
++}
+
+ // -----------------
+ // - ScannerThread -
+@@ -126,7 +156,7 @@
+
+ class ScannerThread : public vos::OThread
+ {
+- SaneHolder* m_pHolder;
++ boost::shared_ptr<SaneHolder> m_pHolder;
+ REF( com::sun::star::lang::XEventListener ) m_xListener;
+ ScannerManager* m_pManager; // just for the disposing call
+
+@@ -134,7 +164,7 @@
+ virtual void run();
+ virtual void onTerminated() { delete this; }
+ public:
+- ScannerThread( SaneHolder* pHolder,
++ ScannerThread( boost::shared_ptr<SaneHolder> pHolder,
+ const REF( com::sun::star::lang::XEventListener )& listener,
+ ScannerManager* pManager );
+ virtual ~ScannerThread();
+@@ -143,7 +173,7 @@
+ // -----------------------------------------------------------------------------
+
+ ScannerThread::ScannerThread(
+- SaneHolder* pHolder,
++ boost::shared_ptr<SaneHolder> pHolder,
+ const REF( com::sun::star::lang::XEventListener )& listener,
+ ScannerManager* pManager )
+ : m_pHolder( pHolder ), m_xListener( listener ), m_pManager( pManager )
+@@ -192,16 +222,16 @@
+ // - ScannerManager -
+ // ------------------
+
+-void ScannerManager::DestroyData()
++void ScannerManager::AcquireData()
+ {
+- // was unused, now because of i99835: "Scanning interface not SANE API compliant"
+- // delete all SaneHolder to get Sane Dtor called
+- int i;
+- for ( i = allSanes.Count(); i > 0; i-- )
+- {
+- SaneHolder *pSaneHolder = allSanes.GetObject(i-1);
+- if ( pSaneHolder ) delete pSaneHolder;
+- }
++ vos::OGuard aGuard( theSaneProtector::get() );
++ theSanes::get().acquire();
++}
++
++void ScannerManager::ReleaseData()
++{
++ vos::OGuard aGuard( theSaneProtector::get() );
++ theSanes::get().release();
+ }
+
+ // -----------------------------------------------------------------------------
+@@ -224,17 +254,14 @@
+
+ SEQ( ScannerContext ) ScannerManager::getAvailableScanners() throw()
+ {
+- vos::OGuard aGuard( aSaneProtector );
++ vos::OGuard aGuard( theSaneProtector::get() );
++ sanevec &rSanes = theSanes::get().m_aSanes;
+
+- if( ! allSanes.Count() )
++ if( rSanes.empty() )
+ {
+- SaneHolder* pSaneHolder = new SaneHolder;
+- pSaneHolder->m_nError = ScanError_ScanErrorNone;
+- pSaneHolder->m_bBusy = false;
++ boost::shared_ptr<SaneHolder> pSaneHolder(new SaneHolder);
+ if( Sane::IsSane() )
+- allSanes.Insert( pSaneHolder );
+- else
+- delete pSaneHolder;
++ rSanes.push_back( pSaneHolder );
+ }
+
+ if( Sane::IsSane() )
+@@ -252,20 +279,21 @@
+
+ BOOL ScannerManager::configureScanner( ScannerContext& scanner_context ) throw( ScannerException )
+ {
+- vos::OGuard aGuard( aSaneProtector );
++ vos::OGuard aGuard( theSaneProtector::get() );
++ sanevec &rSanes = theSanes::get().m_aSanes;
+
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "ScannerManager::configureScanner\n" );
+ #endif
+
+- if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= allSanes.Count() )
++ if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= rSanes.size() )
+ throw ScannerException(
+ ::rtl::OUString::createFromAscii( "Scanner does not exist" ),
+ REF( XScannerManager )( this ),
+ ScanError_InvalidContext
+ );
+
+- SaneHolder* pHolder = allSanes.GetObject( scanner_context.InternalData );
++ boost::shared_ptr<SaneHolder> pHolder = rSanes[scanner_context.InternalData];
+ if( pHolder->m_bBusy )
+ throw ScannerException(
+ ::rtl::OUString::createFromAscii( "Scanner is busy" ),
+@@ -286,19 +314,20 @@
+ void ScannerManager::startScan( const ScannerContext& scanner_context,
+ const REF( com::sun::star::lang::XEventListener )& listener ) throw( ScannerException )
+ {
+- vos::OGuard aGuard( aSaneProtector );
++ vos::OGuard aGuard( theSaneProtector::get() );
++ sanevec &rSanes = theSanes::get().m_aSanes;
+
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "ScannerManager::startScan\n" );
+ #endif
+
+- if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= allSanes.Count() )
++ if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= rSanes.size() )
+ throw ScannerException(
+ ::rtl::OUString::createFromAscii( "Scanner does not exist" ),
+ REF( XScannerManager )( this ),
+ ScanError_InvalidContext
+ );
+- SaneHolder* pHolder = allSanes.GetObject( scanner_context.InternalData );
++ boost::shared_ptr<SaneHolder> pHolder = rSanes[scanner_context.InternalData];
+ if( pHolder->m_bBusy )
+ throw ScannerException(
+ ::rtl::OUString::createFromAscii( "Scanner is busy" ),
+@@ -315,16 +344,17 @@
+
+ ScanError ScannerManager::getError( const ScannerContext& scanner_context ) throw( ScannerException )
+ {
+- vos::OGuard aGuard( aSaneProtector );
++ vos::OGuard aGuard( theSaneProtector::get() );
++ sanevec &rSanes = theSanes::get().m_aSanes;
+
+- if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= allSanes.Count() )
++ if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= rSanes.size() )
+ throw ScannerException(
+ ::rtl::OUString::createFromAscii( "Scanner does not exist" ),
+ REF( XScannerManager )( this ),
+ ScanError_InvalidContext
+ );
+
+- SaneHolder* pHolder = allSanes.GetObject( scanner_context.InternalData );
++ boost::shared_ptr<SaneHolder> pHolder = rSanes[scanner_context.InternalData];
+
+ return pHolder->m_nError;
+ }
+@@ -333,15 +363,16 @@
+
+ REF( AWT::XBitmap ) ScannerManager::getBitmap( const ScannerContext& scanner_context ) throw( ScannerException )
+ {
+- vos::OGuard aGuard( aSaneProtector );
++ vos::OGuard aGuard( theSaneProtector::get() );
++ sanevec &rSanes = theSanes::get().m_aSanes;
+
+- if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= allSanes.Count() )
++ if( scanner_context.InternalData < 0 || (ULONG)scanner_context.InternalData >= rSanes.size() )
+ throw ScannerException(
+ ::rtl::OUString::createFromAscii( "Scanner does not exist" ),
+ REF( XScannerManager )( this ),
+ ScanError_InvalidContext
+ );
+- SaneHolder* pHolder = allSanes.GetObject( scanner_context.InternalData );
++ boost::shared_ptr<SaneHolder> pHolder = rSanes[scanner_context.InternalData];
+
+ vos::OGuard aProtGuard( pHolder->m_aProtector );
+
+diff -ru extensions.orig/source/scanner/scanwin.cxx extensions/source/scanner/scanwin.cxx
+--- extensions.orig/source/scanner/scanwin.cxx 2010-07-12 20:17:35.000000000 +0100
++++ extensions/source/scanner/scanwin.cxx 2010-07-13 09:28:40.000000000 +0100
+@@ -887,7 +887,11 @@
+ // - ScannerManager -
+ // ------------------
+
+-void ScannerManager::DestroyData()
++void ScannerManager::AcquireData()
++{
++}
++
++void ScannerManager::ReleaseData()
+ {
+ if( mpData )
+ {
+@@ -979,7 +983,7 @@
+ }
+
+ GlobalUnlock( hDIB );
+- DestroyData();
++ ReleaseData();
+ }
+
+ return aRet;
+@@ -1009,7 +1013,7 @@
+ if( rContext.InternalData != 0 || rContext.ScannerName != ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TWAIN" ) ) )
+ throw ScannerException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Scanner does not exist" ) ), xThis, ScanError_InvalidContext );
+
+- DestroyData();
++ ReleaseData();
+
+ return aTwain.SelectSource( *this );
+ }
+@@ -1025,7 +1029,7 @@
+ if( rContext.InternalData != 0 || rContext.ScannerName != ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TWAIN" ) ) )
+ throw ScannerException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Scanner does not exist" ) ), xThis, ScanError_InvalidContext );
+
+- DestroyData();
++ ReleaseData();
+ aTwain.PerformTransfer( *this, rxListener );
+ }
+
--- openoffice.org-3.3.0.ooo113117.extensions.broken.scanner.shutdown.patch DELETED ---
More information about the scm-commits
mailing list