sc/source/ui/collab/contacts.cxx | 29 +++++++++++++++++++++-------- sc/source/ui/collab/contacts.hxx | 2 +- sc/source/ui/collab/sendfunc.cxx | 6 +----- sc/source/ui/collab/sendfunc.hxx | 1 - sc/source/ui/view/cellsh3.cxx | 4 ++-- tubes/inc/tubes/manager.hxx | 1 + 6 files changed, 26 insertions(+), 17 deletions(-)
New commits: commit 9fb21707db92e051493a3e959308a37112d32ffe Author: Matúš Kukan <[email protected]> Date: Fri Jun 29 19:30:46 2012 +0200 tubes: fallback to master mode when not possible to init TeleManager as slave diff --git a/sc/source/ui/collab/contacts.cxx b/sc/source/ui/collab/contacts.cxx index 7ef5ab0..0c70585 100644 --- a/sc/source/ui/collab/contacts.cxx +++ b/sc/source/ui/collab/contacts.cxx @@ -76,7 +76,18 @@ class TubeContacts : public ModelessDialog pSender = new ScDocFuncSend( *pScDocShell, pReceiver ); pDocFunc = pSender; } - pSender->InitTeleManager( false ); + // This is a hack to work around: + // `error registering client handler: Name + // 'org.freedesktop.Telepathy.Client.LibreOffice' already in use by another process` + // This happens when there is already slave instance running, + // so we try to init TeleManager as master. + bool bIsMaster = false; + if (!pSender->InitTeleManager( bIsMaster )) + { + fprintf( stderr, "Trying to initialize TeleManager as master..\n" ); + bIsMaster = true; + pSender->InitTeleManager( bIsMaster ); + } } void StartBuddySession() commit 26ff9e3b06efcefb1b9cda2b41378fcb23a01ece Author: Matúš Kukan <[email protected]> Date: Fri Jun 29 19:17:59 2012 +0200 tubes: unref TeleManager if we do not store the pointer diff --git a/sc/source/ui/collab/sendfunc.cxx b/sc/source/ui/collab/sendfunc.cxx index f58fd6a..9ab6e78 100644 --- a/sc/source/ui/collab/sendfunc.cxx +++ b/sc/source/ui/collab/sendfunc.cxx @@ -302,6 +302,7 @@ bool ScDocFuncSend::InitTeleManager( bool bIsMaster ) return true; } fprintf( stderr, "Could not connect.\n" ); + pManager->unref(); return false; } commit c81e93931f42567f4e662804129d97b6e0cfa0d7 Author: Matúš Kukan <[email protected]> Date: Fri Jun 29 19:15:40 2012 +0200 tubes: use new TeleManager::get() method without parameter diff --git a/sc/source/ui/collab/contacts.cxx b/sc/source/ui/collab/contacts.cxx index bd6e6d4..7ef5ab0 100644 --- a/sc/source/ui/collab/contacts.cxx +++ b/sc/source/ui/collab/contacts.cxx @@ -132,9 +132,11 @@ public: RTL_TEXTENCODING_UTF8 ); } - void Populate( const TeleManager &rManager ) + void Populate( const TeleManager *pManager ) { - ContactList *pContacts = rManager.getContactList(); + if (!pManager) + return ; + ContactList *pContacts = pManager->getContactList(); if ( pContacts ) { fprintf( stderr, "contacts !\n" ); @@ -193,11 +195,11 @@ IMPL_LINK_NOARG( TubeContacts, BtnListenHdl ) #endif namespace tubes { -void createContacts( const TeleManager &rManager ) +void createContacts( const TeleManager *pManager ) { #ifdef CONTACTS_DLG TubeContacts *pContacts = new TubeContacts(); - pContacts->Populate( rManager ); + pContacts->Populate( pManager ); #endif } } diff --git a/sc/source/ui/collab/contacts.hxx b/sc/source/ui/collab/contacts.hxx index f7ff6a9..404a6fc 100644 --- a/sc/source/ui/collab/contacts.hxx +++ b/sc/source/ui/collab/contacts.hxx @@ -30,7 +30,7 @@ class TeleManager; namespace tubes { - void createContacts( const TeleManager &rContacts ); + void createContacts( const TeleManager *pManager ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx index 6d3fcf3..e10d5b5 100644 --- a/sc/source/ui/view/cellsh3.cxx +++ b/sc/source/ui/view/cellsh3.cxx @@ -60,7 +60,7 @@ #ifdef ENABLE_TELEPATHY #include <tubes/manager.hxx> namespace tubes { - void createContacts( const TeleManager &rContacts ); + void createContacts( const TeleManager *pManager ); } #endif @@ -125,7 +125,7 @@ void ScCellShell::Execute( SfxRequest& rReq ) case SID_COLLABORATION: #ifdef ENABLE_TELEPATHY - tubes::createContacts( TeleManager::get( true ) ); + tubes::createContacts( TeleManager::get() ); #endif break; diff --git a/tubes/inc/tubes/manager.hxx b/tubes/inc/tubes/manager.hxx index 1aba675..c780fd2 100644 --- a/tubes/inc/tubes/manager.hxx +++ b/tubes/inc/tubes/manager.hxx @@ -82,6 +82,7 @@ public: TeleManager( bool bAcceptIncoming = true, bool bCreateOwnGMainLoop = false ); ~TeleManager(); + static TeleManager *get() { return pSingleton; } static TeleManager *get( bool bAcceptIncoming ); void unref(); commit 352c5e358dba7cd575c5579698b2fff348612926 Author: Matúš Kukan <[email protected]> Date: Fri Jun 29 19:00:16 2012 +0200 tubes: remove unused SetCollaboration method diff --git a/sc/source/ui/collab/sendfunc.cxx b/sc/source/ui/collab/sendfunc.cxx index 262273d..f58fd6a 100644 --- a/sc/source/ui/collab/sendfunc.cxx +++ b/sc/source/ui/collab/sendfunc.cxx @@ -282,11 +282,6 @@ ScDocFuncSend::ScDocFuncSend( ScDocShell& rDocSh, boost::shared_ptr<ScDocFuncRec fprintf( stderr, "Sender created !\n" ); } -void ScDocFuncSend::SetCollaboration( TeleManager *pManager ) -{ - mpManager = pManager; -} - bool ScDocFuncSend::InitTeleManager( bool bIsMaster ) { if (mpManager) diff --git a/sc/source/ui/collab/sendfunc.hxx b/sc/source/ui/collab/sendfunc.hxx index dcb30aa..99fde98 100644 --- a/sc/source/ui/collab/sendfunc.hxx +++ b/sc/source/ui/collab/sendfunc.hxx @@ -237,7 +237,6 @@ public: ScDocFuncSend( ScDocShell& rDocSh, boost::shared_ptr<ScDocFuncRecv> pDirect ); virtual ~ScDocFuncSend() {} - void SetCollaboration( TeleManager *pManager ); bool InitTeleManager( bool bIsMaster ); virtual void EnterListAction( sal_uInt16 nNameResId ); commit d6b287f158cf49909f7f6ee3d4385c26161eaa6f Author: Matúš Kukan <[email protected]> Date: Fri Jun 29 18:58:37 2012 +0200 tubes: use correct casts diff --git a/sc/source/ui/collab/contacts.cxx b/sc/source/ui/collab/contacts.cxx index 085237b..bd6e6d4 100644 --- a/sc/source/ui/collab/contacts.cxx +++ b/sc/source/ui/collab/contacts.cxx @@ -65,9 +65,9 @@ class TubeContacts : public ModelessDialog void Listen() { - ScDocShell *pScDocShell = reinterpret_cast<ScDocShell*> (SfxObjectShell::Current()); + ScDocShell *pScDocShell = dynamic_cast<ScDocShell*> (SfxObjectShell::Current()); ScDocFunc *pDocFunc = pScDocShell ? &pScDocShell->GetDocFunc() : NULL; - ScDocFuncSend *pSender = reinterpret_cast<ScDocFuncSend*> (pDocFunc); + ScDocFuncSend *pSender = dynamic_cast<ScDocFuncSend*> (pDocFunc); if (!pSender) { delete pDocFunc; @@ -83,7 +83,7 @@ class TubeContacts : public ModelessDialog { AccountContact *pAC = NULL; if (maList.FirstSelected()) - pAC = reinterpret_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); + pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); if (pAC) { TpAccount* pAccount = pAC->mpAccount;
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
