[Libreoffice-commits] .: Branch 'feature/remote' - 2 commits - android/sdremote sd/Library_sd.mk sd/source
Andrzej J.R. Hunt
ajrhunt at kemper.freedesktop.org
Thu Jul 19 09:47:22 PDT 2012
android/sdremote/src/org/libreoffice/impressremote/TestClient.java | 2
sd/Library_sd.mk | 1
sd/source/ui/inc/Server.hxx | 2
sd/source/ui/remotecontrol/Listener.cxx | 16 -
sd/source/ui/remotecontrol/Receiver.cxx | 97 ----------
sd/source/ui/remotecontrol/Receiver.hxx | 6
sd/source/ui/remotecontrol/Server.cxx | 76 ++++---
sd/source/ui/slideshow/slideshow.cxx | 4
8 files changed, 54 insertions(+), 150 deletions(-)
New commits:
commit c88c56c30c1484e0100e36de9365e8a6c38a8caf
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Thu Jul 19 18:43:18 2012 +0200
Moved preview image preparation/transfer into separate class. Enabled.
Change-Id: I09b0c2d1521939af058526d1727d0c4d34ad0452
diff --git a/android/sdremote/src/org/libreoffice/impressremote/TestClient.java b/android/sdremote/src/org/libreoffice/impressremote/TestClient.java
index 1b0f749..4d716ad 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/TestClient.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/TestClient.java
@@ -158,8 +158,6 @@ public class TestClient extends Activity {
mImageView.setImageBitmap(aBitmap);
mCurrentPreviewImageMissing = false;
}
- mImageView.setImageBitmap(aBitmap);
- // TODO: remove above line, use slide changed to show image.
break;
}
diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk
index 2b43a36..4847abf 100644
--- a/sd/Library_sd.mk
+++ b/sd/Library_sd.mk
@@ -320,6 +320,7 @@ $(eval $(call gb_Library_add_exception_objects,sd,\
sd/source/ui/presenter/PresenterPreviewCache \
sd/source/ui/presenter/PresenterTextView \
sd/source/ui/presenter/SlideRenderer \
+ sd/source/ui/remotecontrol/ImagePreparer \
sd/source/ui/remotecontrol/Server \
sd/source/ui/remotecontrol/Receiver \
sd/source/ui/remotecontrol/Listener \
diff --git a/sd/source/ui/inc/Server.hxx b/sd/source/ui/inc/Server.hxx
index b0dcc1c..065b1cd 100644
--- a/sd/source/ui/inc/Server.hxx
+++ b/sd/source/ui/inc/Server.hxx
@@ -35,6 +35,7 @@ namespace sd
class Transmitter;
class Listener;
+ class ImagePreparer;
class Server : public salhelper::Thread
{
@@ -53,6 +54,7 @@ namespace sd
void execute();
static Transmitter *pTransmitter;
static rtl::Reference<Listener> mListener;
+ static rtl::Reference<ImagePreparer> mPreparer;
};
}
diff --git a/sd/source/ui/remotecontrol/Listener.cxx b/sd/source/ui/remotecontrol/Listener.cxx
index e51bb57..9607707 100644
--- a/sd/source/ui/remotecontrol/Listener.cxx
+++ b/sd/source/ui/remotecontrol/Listener.cxx
@@ -101,7 +101,7 @@ void SAL_CALL Listener::slideTransitionStarted (void)
sal_Int32 aSlide = mController->getCurrentSlideIndex();
OStringBuffer aBuilder( "slide_updated\n" );
- aBuilder.append( OString::valueOf( aSlide + 1 ) ); // Slides are numbered from 0
+ aBuilder.append( OString::valueOf( aSlide ) );
aBuilder.append( "\n\n" );
if ( pTransmitter )
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 86a1a03..654664a 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -12,10 +12,8 @@
#include <com/sun/star/presentation/XPresentationSupplier.hpp>
#include <com/sun/star/presentation/XPresentation2.hpp>
#include <com/sun/star/frame/XFramesSupplier.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XExporter.hpp>
#include <com/sun/star/uno/RuntimeException.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
+
#include <comphelper/processfactory.hxx>
#include <osl/file.hxx>
@@ -110,99 +108,6 @@ void Receiver::parseCommand( std::vector<OString> aCommand )
xSlideShowController->resume();
}
}
- // FIXME: remove later, this is just to test functionality
-// sendPreview( 0, xSlideShowController, mTransmitter );
-
-}
-
-void sendPreview( sal_uInt32 aSlideNumber,
- const uno::Reference<presentation::XSlideShowController>& xSlideShowController, Transmitter *aTransmitter )
-{
-
- sal_uInt64 aSize; // Unused
- uno::Sequence<sal_Int8> aImageData = preparePreview( aSlideNumber, xSlideShowController, 320, 240, aSize );
- rtl::OUStringBuffer aStrBuffer;
- ::sax::Converter::encodeBase64( aStrBuffer, aImageData );
-
- OString aEncodedShortString = rtl::OUStringToOString(
- aStrBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
-
- // Start the writing
- rtl::OStringBuffer aBuffer;
-
- aBuffer.append( "slide_preview\n" );
-
- rtl::OString aSlideNumberString( rtl::OString::valueOf( sal_Int32(2) ) ); // FIXME get number
- aBuffer.append( aSlideNumberString.getStr() );
- aBuffer.append( "\n" );
-
- aBuffer.append( aEncodedShortString.getStr() );
- aBuffer.append( "\n\n" );
- aTransmitter->addMessage( aBuffer.makeStringAndClear(), Transmitter::Priority::LOW );
-
-}
-
-uno::Sequence<sal_Int8>
-preparePreview(sal_uInt32 aSlideNumber,
- const uno::Reference<presentation::XSlideShowController>& xSlideShowController,
- sal_uInt32 aWidth, sal_uInt32 aHeight, sal_uInt64 &rSize )
-{
- (void)aWidth; (void)aHeight; // FIXME: remove me when I'm used
- // Create temp file
- OUString aFileURL;
- FileBase::createTempFile( 0, 0, &aFileURL );
-
- uno::Reference< lang::XMultiServiceFactory > xServiceManager(
- ::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
-
- uno::Reference< document::XFilter > xFilter( xServiceManager->createInstance(
- "com.sun.star.drawing.GraphicExportFilter" ) , uno::UNO_QUERY_THROW );
-
- uno::Reference< document::XExporter > xExporter( xFilter, uno::UNO_QUERY_THROW );
-
- uno::Reference< lang::XComponent > xSourceDoc(
- xSlideShowController->getSlideByIndex( aSlideNumber ) , uno::UNO_QUERY_THROW );
-
- xExporter->setSourceDocument( xSourceDoc );
-
- uno::Sequence< beans::PropertyValue > aFilterData(3);
- aFilterData[0].Name = "PixelWidth";
- aFilterData[0].Value <<= sal_Int32(2000);
- aFilterData[1].Name = "PixelHeight";
- aFilterData[1].Value <<= sal_Int32(2000);
-
- // Add quality if jpg "Quality" [1-100]
- // FIXME: is setting color mode needed.
- aFilterData[2].Name = "ColorMode";
- aFilterData[2].Value <<= sal_Int32(0); // Color
-
- uno::Sequence< beans::PropertyValue > aProps(3);
- aProps[0].Name = "MediaType";
- aProps[0].Value <<= OUString( "image/png" );
-
- aProps[1].Name = "URL";
- aProps[1].Value <<= aFileURL;
-
- aProps[2].Name = "FilterData";
- aProps[2].Value <<= aFilterData;
-
- xFilter->filter( aProps );
-
- // FIXME: error handling.
-
- File aFile( aFileURL );
- aFile.open(0);
- sal_uInt64 aRead;
- rSize = 0;
- aFile.getSize( rSize );
- uno::Sequence<sal_Int8> aContents( rSize );
-
- aFile.read( aContents.getArray(), rSize, aRead );
- aFile.close();
- File::remove( aFileURL );
- return aContents;
-
}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/remotecontrol/Receiver.hxx b/sd/source/ui/remotecontrol/Receiver.hxx
index 99245d8..5c73913 100644
--- a/sd/source/ui/remotecontrol/Receiver.hxx
+++ b/sd/source/ui/remotecontrol/Receiver.hxx
@@ -38,11 +38,5 @@ private:
};
}
-
-css::uno::Sequence<sal_Int8> preparePreview(sal_uInt32 aSlideNumber, const css::uno::Reference<css::presentation::XSlideShowController>& xSlideShowController, sal_uInt32 aWidth, sal_uInt32 aHeight, sal_uInt64 &aSize );
-
-void sendPreview(sal_uInt32 aSlideNumber, const css::uno::Reference<
- css::presentation::XSlideShowController>& xSlideShowController, sd::Transmitter *aTransmitter );
-
#endif // _SD_IMPRESSREMOTE_RECEIVER_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/remotecontrol/Server.cxx b/sd/source/ui/remotecontrol/Server.cxx
index 361954d..ab6a212 100644
--- a/sd/source/ui/remotecontrol/Server.cxx
+++ b/sd/source/ui/remotecontrol/Server.cxx
@@ -13,10 +13,11 @@
#include <comphelper/processfactory.hxx>
#include "sddll.hxx"
-#include "Server.hxx"
-#include "Receiver.hxx"
-#include "Listener.hxx"
+#include "ImagePreparer.hxx"
+#include "Listener.hxx"
+#include "Receiver.hxx"
+#include "Server.hxx"
using namespace std;
using namespace sd;
@@ -94,6 +95,11 @@ void Server::listenThread()
// TODO: deal with transmision errors gracefully.
mListener->disposing();
mListener = NULL;
+
+ if ( mPreparer.is() )
+ delete mPreparer.get();
+ mPreparer = NULL;
+
delete pTransmitter;
pTransmitter = NULL;
fprintf( stderr, "Finished listening\n" );
@@ -134,6 +140,9 @@ void Server::presentationStarted( const css::uno::Reference<
{
mListener = rtl::Reference<Listener>( new Listener( spServer, pTransmitter ) );
mListener->init( rController );
+
+ mPreparer = rtl::Reference<ImagePreparer>( new ImagePreparer( rController, pTransmitter ) );
+ mPreparer->launch();
}
}
@@ -142,6 +151,7 @@ void Server::presentationStarted( const css::uno::Reference<
Server *sd::Server::spServer = NULL;
Transmitter *sd::Server::pTransmitter = NULL;
rtl::Reference<Listener> sd::Server::mListener = NULL;
+rtl::Reference<ImagePreparer> sd::Server::mPreparer = NULL;
void Server::setup()
{
commit e818599d1397c965b554f406bda58b52d302faca
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Thu Jul 19 15:36:24 2012 +0200
Fixed Listener registration and destruction for all cases.
Change-Id: I I I8be3c67889969d714514ca073c48ab26248a30e1
diff --git a/sd/source/ui/remotecontrol/Listener.cxx b/sd/source/ui/remotecontrol/Listener.cxx
index ed6532c..e51bb57 100644
--- a/sd/source/ui/remotecontrol/Listener.cxx
+++ b/sd/source/ui/remotecontrol/Listener.cxx
@@ -36,12 +36,16 @@ Listener::~Listener()
void Listener::init( const css::uno::Reference< css::presentation::XSlideShowController >& aController)
{
- if (aController.is() )
+ if ( aController.is() )
{
mController = css::uno::Reference< css::presentation::XSlideShowController >( aController );
aController->addSlideShowListener( this );
fprintf( stderr, "Registered listener.\n" );
}
+ else
+ {
+ fprintf( stderr, "Couldn't register listener -- aController isn't\n" );
+ }
}
//----- XAnimationListener ----------------------------------------------------
@@ -93,6 +97,7 @@ void SAL_CALL Listener::hyperLinkClicked (const rtl::OUString &)
void SAL_CALL Listener::slideTransitionStarted (void)
throw (css::uno::RuntimeException)
{
+ fprintf( stderr, "slideTransitionStarted\n" );
sal_Int32 aSlide = mController->getCurrentSlideIndex();
OStringBuffer aBuilder( "slide_updated\n" );
@@ -118,25 +123,20 @@ void SAL_CALL Listener::slideAnimationsEnded (void)
void SAL_CALL Listener::disposing (void)
{
- fprintf( stderr, "In disposing\n" );
pTransmitter = NULL;
- fprintf( stderr, "Nulled transmitter\n" );
if ( mController.is() )
{
- fprintf( stderr, "mController was\n" );
mController->removeSlideShowListener( this );
mController = NULL;
}
mServer->informListenerDestroyed();
- fprintf( stderr, "finished disposing\n" );
}
void SAL_CALL Listener::disposing (
const css::lang::EventObject& rEvent)
throw (::com::sun::star::uno::RuntimeException)
{
- fprintf( stderr, "disposing\n");
(void) rEvent;
- dispose();
+ dispose();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/sd/source/ui/remotecontrol/Server.cxx b/sd/source/ui/remotecontrol/Server.cxx
index 919d471..361954d 100644
--- a/sd/source/ui/remotecontrol/Server.cxx
+++ b/sd/source/ui/remotecontrol/Server.cxx
@@ -35,12 +35,9 @@ Server::~Server()
// Run as a thread
void Server::listenThread()
{
- fprintf( stderr, "Server:: address of Transmitter before:%p\n", pTransmitter );
pTransmitter = new Transmitter( mStreamSocket );
pTransmitter->launch();
Receiver aReceiver( pTransmitter );
- fprintf( stderr, "Server:: address of Transmitter:%p\n", pTransmitter );
-// aTransmitter.addMessage( "Hello world\n\n", Transmitter::Priority::HIGH );
try {
fprintf( stderr, "Trying to add a Listener in listenThread\n" );
uno::Reference< lang::XMultiServiceFactory > xServiceManager(
@@ -60,50 +57,46 @@ void Server::listenThread()
}
catch ( com::sun::star::uno::RuntimeException &e )
{
- fprintf( stderr, "Exception on add\n" );
}
// TODO: decryption
- while (true)
+
+ sal_uInt64 aRet, aRead;
+ vector<char> aBuffer;
+ vector<OString> aCommand;
+ aRead = 0;
+ while ( true )
{
- sal_uInt64 aRet, aRead;
- vector<char> aBuffer;
- vector<OString> aCommand;
- aRead = 0;
- while ( true )
+ aBuffer.resize( aRead + 100 );
+ aRet = mStreamSocket.recv( &aBuffer[aRead], 100 );
+ if ( aRet == 0 )
{
- aBuffer.resize( aRead + 100 );
- aRet = mStreamSocket.recv( &aBuffer[aRead], 100 );
- if ( aRet == 0 )
- {
- break; // I.e. transmission finished.
- }
- aRead += aRet;
- vector<char>::iterator aIt;
- while ( (aIt = find( aBuffer.begin(), aBuffer.end(), '\n' ))
- != aBuffer.end() )
- {
- sal_uInt64 aLocation = aIt - aBuffer.begin();
-
- aCommand.push_back( OString( &(*aBuffer.begin()), aLocation ) );
+ break; // I.e. transmission finished.
+ }
+ aRead += aRet;
+ vector<char>::iterator aIt;
+ while ( (aIt = find( aBuffer.begin(), aBuffer.end(), '\n' ))
+ != aBuffer.end() )
+ {
+ sal_uInt64 aLocation = aIt - aBuffer.begin();
- if ( aIt == aBuffer.begin() )
- {
- aReceiver.parseCommand( aCommand );
- aCommand.clear();
- }
- aBuffer.erase( aBuffer.begin(), aIt + 1 ); // Also delete the newline
- aRead -= (aLocation + 1);
+ aCommand.push_back( OString( &(*aBuffer.begin()), aLocation ) );
+ if ( aIt == aBuffer.begin() )
+ {
+ aReceiver.parseCommand( aCommand );
+ aCommand.clear();
}
+ aBuffer.erase( aBuffer.begin(), aIt + 1 ); // Also delete the newline
+ aRead -= (aLocation + 1);
}
-
- // TODO: deal with transmision errors gracefully.
}
- mListener->dispose();
+ // TODO: deal with transmision errors gracefully.
+ mListener->disposing();
mListener = NULL;
delete pTransmitter;
pTransmitter = NULL;
+ fprintf( stderr, "Finished listening\n" );
}
@@ -141,7 +134,6 @@ void Server::presentationStarted( const css::uno::Reference<
{
mListener = rtl::Reference<Listener>( new Listener( spServer, pTransmitter ) );
mListener->init( rController );
-
}
}
diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx
index a48de21..05bf461 100644
--- a/sd/source/ui/slideshow/slideshow.cxx
+++ b/sd/source/ui/slideshow/slideshow.cxx
@@ -268,7 +268,7 @@ void SlideShow::CreateController( ViewShell* pViewSh, ::sd::View* pView, ::Wind
// multiple slide show instances for one document.
mxController = xController;
mbIsInStartup = false;
- Server::presentationStarted( getController() );
+
}
// --------------------------------------------------------------------
@@ -1073,6 +1073,8 @@ void SlideShow::activate( ViewShellBase& rBase )
if( mxController.is() )
mxController->activate();
+
+ Server::presentationStarted( mxController.get() );
}
// ---------------------------------------------------------
More information about the Libreoffice-commits
mailing list