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