[Libreoffice-commits] core.git: dbaccess/Library_dbu.mk dbaccess/source include/dbaccess
Julien Nabet
serval2412 at yahoo.fr
Sat Jan 24 05:04:46 PST 2015
dbaccess/Library_dbu.mk | 2
dbaccess/source/ui/app/AppController.hxx | 2
dbaccess/source/ui/browser/AsyncronousLink.cxx | 87 +++++++++++++++++++++++++
dbaccess/source/ui/dlg/dbwizsetup.cxx | 4 -
dbaccess/source/ui/inc/brwctrlr.hxx | 6 -
include/dbaccess/AsynchronousLink.hxx | 66 ------------------
include/dbaccess/AsyncronousLink.hxx | 66 ++++++++++++++++++
include/dbaccess/genericcontroller.hxx | 6 -
8 files changed, 163 insertions(+), 76 deletions(-)
New commits:
commit 025db4982dc0305d1e346f1342d2fc7dde139c02
Author: Julien Nabet <serval2412 at yahoo.fr>
Date: Sat Jan 24 14:03:44 2015 +0100
Revert "Typo: ..syncronous..=>synchronous (dbaccess)"
This reverts commit 285654bf79f4e09d9ac0f6974db08df85446a500.
diff --git a/dbaccess/Library_dbu.mk b/dbaccess/Library_dbu.mk
index 2930403..c9b4f40 100644
--- a/dbaccess/Library_dbu.mk
+++ b/dbaccess/Library_dbu.mk
@@ -88,7 +88,7 @@ $(eval $(call gb_Library_add_exception_objects,dbu,\
dbaccess/source/ui/app/AppTitleWindow \
dbaccess/source/ui/app/AppView \
dbaccess/source/ui/app/subcomponentmanager \
- dbaccess/source/ui/browser/AsynchronousLink \
+ dbaccess/source/ui/browser/AsyncronousLink \
dbaccess/source/ui/browser/brwctrlr \
dbaccess/source/ui/browser/brwview \
dbaccess/source/ui/browser/dataview \
diff --git a/dbaccess/source/ui/app/AppController.hxx b/dbaccess/source/ui/app/AppController.hxx
index 3a36987..95a1457 100644
--- a/dbaccess/source/ui/app/AppController.hxx
+++ b/dbaccess/source/ui/app/AppController.hxx
@@ -117,7 +117,7 @@ namespace dbaui
TransferableClipboardListener*
m_pClipbordNotifier; // notifier for changes in the clipboard
ImplSVEvent * m_nAsyncDrop;
- OAsynchronousLink m_aSelectContainerEvent;
+ OAsyncronousLink m_aSelectContainerEvent;
PreviewMode m_ePreviewMode; // the mode of the preview
ElementType m_eCurrentType;
bool m_bNeedToReconnect; // true when the settings of the data source were modified and the connection is no longer up to date
diff --git a/dbaccess/source/ui/browser/AsyncronousLink.cxx b/dbaccess/source/ui/browser/AsyncronousLink.cxx
new file mode 100644
index 0000000..ac940d4
--- /dev/null
+++ b/dbaccess/source/ui/browser/AsyncronousLink.cxx
@@ -0,0 +1,87 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <dbaccess/AsyncronousLink.hxx>
+#include <vcl/svapp.hxx>
+#include <tools/debug.hxx>
+
+// OAsyncronousLink
+using namespace dbaui;
+OAsyncronousLink::OAsyncronousLink( const Link& _rHandler )
+ :m_aHandler(_rHandler)
+ ,m_aEventSafety()
+ ,m_aDestructionSafety()
+ ,m_nEventId(0)
+{
+}
+
+OAsyncronousLink::~OAsyncronousLink()
+{
+ {
+ ::osl::MutexGuard aEventGuard( m_aEventSafety );
+ if ( m_nEventId )
+ Application::RemoveUserEvent(m_nEventId);
+ m_nEventId = 0;
+ }
+
+ {
+ ::osl::MutexGuard aDestructionGuard( m_aDestructionSafety );
+ // this is just for the case we're deleted while another thread just handled the event :
+ // if this other thread called our link while we were deleting the event here, the
+ // link handler blocked. With leaving the above block it continued, but now we are prevented
+ // to leave this destructor 'til the link handler recognizes that nEvent == 0 and leaves.
+ }
+}
+
+void OAsyncronousLink::Call( void* _pArgument )
+{
+ ::osl::MutexGuard aEventGuard( m_aEventSafety );
+ if (m_nEventId)
+ Application::RemoveUserEvent(m_nEventId);
+ m_nEventId = Application::PostUserEvent( LINK( this, OAsyncronousLink, OnAsyncCall ), _pArgument );
+}
+
+void OAsyncronousLink::CancelCall()
+{
+ ::osl::MutexGuard aEventGuard( m_aEventSafety );
+ if ( m_nEventId )
+ Application::RemoveUserEvent( m_nEventId );
+ m_nEventId = 0;
+}
+
+IMPL_LINK(OAsyncronousLink, OnAsyncCall, void*, _pArg)
+{
+ {
+ ::osl::MutexGuard aDestructionGuard( m_aDestructionSafety );
+ {
+ ::osl::MutexGuard aEventGuard( m_aEventSafety );
+ if (!m_nEventId)
+ // our destructor deleted the event just while we are waiting for m_aEventSafety
+ // -> get outta here
+ return 0;
+ m_nEventId = 0;
+ }
+ }
+ if (m_aHandler.IsSet())
+ return m_aHandler.Call(_pArg);
+
+ return 0L;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx
index 7111764..2922922 100644
--- a/dbaccess/source/ui/dlg/dbwizsetup.cxx
+++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx
@@ -42,7 +42,7 @@
#include "dbaccess_helpid.hrc"
#include "ConnectionPageSetup.hxx"
#include "UITools.hxx"
-#include <dbaccess/AsynchronousLink.hxx>
+#include <dbaccess/AsyncronousLink.hxx>
#include <sfx2/filedlghelper.hxx>
#include <cppuhelper/exc_hlp.hxx>
@@ -880,7 +880,7 @@ bool ODbTypeWizDialogSetup::SaveDatabaseDocument()
Reference< XDesktop2 > m_xDesktop;
Reference< XInteractionHandler2 > m_xInteractionHandler;
OUString m_sURL;
- OAsynchronousLink m_aAsyncCaller;
+ OAsyncronousLink m_aAsyncCaller;
public:
AsyncLoader( const Reference< XComponentContext >& _rxORB, const OUString& _rURL );
diff --git a/dbaccess/source/ui/inc/brwctrlr.hxx b/dbaccess/source/ui/inc/brwctrlr.hxx
index 16d1c33..63e536a 100644
--- a/dbaccess/source/ui/inc/brwctrlr.hxx
+++ b/dbaccess/source/ui/inc/brwctrlr.hxx
@@ -96,8 +96,8 @@ namespace dbaui
TransferableClipboardListener*
m_pClipbordNotifier; // notifier for changes in the clipboard
- OAsynchronousLink m_aAsyncGetCellFocus;
- OAsynchronousLink m_aAsyncDisplayError;
+ OAsyncronousLink m_aAsyncGetCellFocus;
+ OAsyncronousLink m_aAsyncDisplayError;
::dbtools::SQLExceptionInfo m_aCurrentError;
OUString m_sStateSaveRecord;
@@ -273,7 +273,7 @@ namespace dbaui
// load the form
// the default implementation does an direct load or starts a load thread, depending on the multithread capabilities
// of the data source.
- // the default implementation also calls LoadFinished after a synchronous load, so be sure to do the same if you override
+ // the default implementation also calls LoadFinished after a syncronous load, so be sure to do the same if you override
// this metod and don't call the base class' method
virtual void LoadFinished(bool bWasSynch);
diff --git a/include/dbaccess/AsynchronousLink.hxx b/include/dbaccess/AsyncronousLink.hxx
similarity index 94%
rename from include/dbaccess/AsynchronousLink.hxx
rename to include/dbaccess/AsyncronousLink.hxx
index 155630d..b0ba02d 100644
--- a/include/dbaccess/AsynchronousLink.hxx
+++ b/include/dbaccess/AsyncronousLink.hxx
@@ -36,7 +36,7 @@ namespace dbaui
event while another thread tries to delete this event in the _destructor_ of the
class).
*/
- class OAsynchronousLink
+ class OAsyncronousLink
{
Link m_aHandler;
@@ -47,10 +47,10 @@ namespace dbaui
public:
/** constructs the object
- @param _rHandler The link to be called asynchronously
+ @param _rHandler The link to be called asyncronously
*/
- OAsynchronousLink( const Link& _rHandler );
- virtual ~OAsynchronousLink();
+ OAsyncronousLink( const Link& _rHandler );
+ virtual ~OAsyncronousLink();
bool IsRunning() const { return m_nEventId != 0; }
diff --git a/include/dbaccess/genericcontroller.hxx b/include/dbaccess/genericcontroller.hxx
index c8dbb0b..79169c3 100644
--- a/include/dbaccess/genericcontroller.hxx
+++ b/include/dbaccess/genericcontroller.hxx
@@ -26,7 +26,7 @@
#include <map>
#include <vector>
-#include <dbaccess/AsynchronousLink.hxx>
+#include <dbaccess/AsyncronousLink.hxx>
#include <dbaccess/controllerframe.hxx>
#include <dbaccess/dbaccessdllapi.h>
#include <dbaccess/IController.hxx>
@@ -238,8 +238,8 @@ namespace dbaui
::osl::Mutex m_aFeatureMutex; // locked when features are append to or remove from deque
StateCache m_aStateCache; // save the current status of feature state
Dispatch m_arrStatusListener; // all our listeners where we dispatch status changes
- OAsynchronousLink m_aAsyncInvalidateAll;
- OAsynchronousLink m_aAsyncCloseTask; // called when a task should be closed
+ OAsyncronousLink m_aAsyncInvalidateAll;
+ OAsyncronousLink m_aAsyncCloseTask; // called when a task should be closed
::com::sun::star::uno::Reference< ::com::sun::star::util::XURLTransformer > m_xUrlTransformer; // needed sometimes
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
More information about the Libreoffice-commits
mailing list