summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h')
-rw-r--r--src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h280
1 files changed, 0 insertions, 280 deletions
diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h b/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h
deleted file mode 100644
index 2fe5dea3d8..0000000000
--- a/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h
+++ /dev/null
@@ -1,280 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** As a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#ifndef QEVENTDISPATCHER_CF_P_H
-#define QEVENTDISPATCHER_CF_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#define DEBUG_EVENT_DISPATCHER 0
-
-#include <QtCore/qabstracteventdispatcher.h>
-#include <QtCore/private/qtimerinfo_unix_p.h>
-#include <QtCore/qdebug.h>
-#include <QtPlatformSupport/private/qcfsocketnotifier_p.h>
-#include <CoreFoundation/CoreFoundation.h>
-
-#ifdef __OBJC__
-@class RunLoopModeTracker;
-#else
-typedef struct objc_object RunLoopModeTracker;
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QEventDispatcherCoreFoundation;
-
-template <class T = QEventDispatcherCoreFoundation>
-class RunLoopSource
-{
-public:
- typedef bool (T::*CallbackFunction)();
-
- enum { kHighestPriority = 0 } RunLoopSourcePriority;
-
- RunLoopSource(T *delegate, CallbackFunction callback)
- : m_delegate(delegate), m_callback(callback)
- {
- CFRunLoopSourceContext context = {};
- context.info = this;
- context.perform = RunLoopSource::process;
-
- m_source = CFRunLoopSourceCreate(kCFAllocatorDefault, kHighestPriority, &context);
- Q_ASSERT(m_source);
- }
-
- ~RunLoopSource()
- {
- CFRunLoopSourceInvalidate(m_source);
- CFRelease(m_source);
- }
-
- void addToMode(CFStringRef mode, CFRunLoopRef runLoop = 0)
- {
- if (!runLoop)
- runLoop = CFRunLoopGetCurrent();
-
- CFRunLoopAddSource(runLoop, m_source, mode);
- }
-
- void signal() { CFRunLoopSourceSignal(m_source); }
-
-private:
- static void process(void *info)
- {
- RunLoopSource *self = static_cast<RunLoopSource *>(info);
- ((self->m_delegate)->*(self->m_callback))();
- }
-
- T *m_delegate;
- CallbackFunction m_callback;
- CFRunLoopSourceRef m_source;
-};
-
-template <class T = QEventDispatcherCoreFoundation>
-class RunLoopObserver
-{
-public:
- typedef void (T::*CallbackFunction) (CFRunLoopActivity activity);
-
- RunLoopObserver(T *delegate, CallbackFunction callback, CFOptionFlags activities)
- : m_delegate(delegate), m_callback(callback)
- {
- CFRunLoopObserverContext context = {};
- context.info = this;
-
- m_observer = CFRunLoopObserverCreate(kCFAllocatorDefault, activities, true, 0, process, &context);
- Q_ASSERT(m_observer);
- }
-
- ~RunLoopObserver()
- {
- CFRunLoopObserverInvalidate(m_observer);
- CFRelease(m_observer);
- }
-
- void addToMode(CFStringRef mode, CFRunLoopRef runLoop = 0)
- {
- if (!runLoop)
- runLoop = CFRunLoopGetCurrent();
-
- if (!CFRunLoopContainsObserver(runLoop, m_observer, mode))
- CFRunLoopAddObserver(runLoop, m_observer, mode);
- }
-
- void removeFromMode(CFStringRef mode, CFRunLoopRef runLoop = 0)
- {
- if (!runLoop)
- runLoop = CFRunLoopGetCurrent();
-
- if (CFRunLoopContainsObserver(runLoop, m_observer, mode))
- CFRunLoopRemoveObserver(runLoop, m_observer, mode);
- }
-
-private:
- static void process(CFRunLoopObserverRef, CFRunLoopActivity activity, void *info)
- {
- RunLoopObserver *self = static_cast<RunLoopObserver *>(info);
- ((self->m_delegate)->*(self->m_callback))(activity);
- }
-
- T *m_delegate;
- CallbackFunction m_callback;
- CFRunLoopObserverRef m_observer;
-};
-
-class QEventDispatcherCoreFoundation : public QAbstractEventDispatcher
-{
- Q_OBJECT
-
-public:
- explicit QEventDispatcherCoreFoundation(QObject *parent = 0);
- ~QEventDispatcherCoreFoundation();
-
- bool processEvents(QEventLoop::ProcessEventsFlags flags);
- bool hasPendingEvents();
-
- void registerSocketNotifier(QSocketNotifier *notifier);
- void unregisterSocketNotifier(QSocketNotifier *notifier);
-
- void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object);
- bool unregisterTimer(int timerId);
- bool unregisterTimers(QObject *object);
- QList<QAbstractEventDispatcher::TimerInfo> registeredTimers(QObject *object) const;
-
- int remainingTime(int timerId);
-
- void wakeUp();
- void interrupt();
- void flush();
-
-protected:
- virtual bool processPostedEvents();
-
- struct ProcessEventsState
- {
- ProcessEventsState(QEventLoop::ProcessEventsFlags f)
- : flags(f), wasInterrupted(false)
- , processedPostedEvents(false), processedTimers(false)
- , deferredWakeUp(false), deferredUpdateTimers(false) {}
-
- QEventLoop::ProcessEventsFlags flags;
- bool wasInterrupted;
- bool processedPostedEvents;
- bool processedTimers;
- bool deferredWakeUp;
- bool deferredUpdateTimers;
- };
-
- ProcessEventsState m_processEvents;
-
-private:
- RunLoopSource<> m_postedEventsRunLoopSource;
- RunLoopObserver<> m_runLoopActivityObserver;
-
- RunLoopModeTracker *m_runLoopModeTracker;
-
- QTimerInfoList m_timerInfoList;
- CFRunLoopTimerRef m_runLoopTimer;
- CFRunLoopTimerRef m_blockedRunLoopTimer;
- bool m_overdueTimerScheduled;
-
- QCFSocketNotifier m_cfSocketNotifier;
-
- void processTimers(CFRunLoopTimerRef);
-
- void handleRunLoopActivity(CFRunLoopActivity activity);
-
- void updateTimers();
- void invalidateTimer();
-};
-
-QT_END_NAMESPACE
-
-#if DEBUG_EVENT_DISPATCHER
-extern uint g_eventDispatcherIndentationLevel;
-#define qEventDispatcherDebug() qDebug().nospace() \
- << qPrintable(QString(QLatin1String("| ")).repeated(g_eventDispatcherIndentationLevel)) \
- << __FUNCTION__ << "(): "
-#define qIndent() ++g_eventDispatcherIndentationLevel
-#define qUnIndent() --g_eventDispatcherIndentationLevel
-#else
-#define qEventDispatcherDebug() QT_NO_QDEBUG_MACRO()
-#define qIndent()
-#define qUnIndent()
-#endif
-
-#endif // QEVENTDISPATCHER_CF_P_H