/* * This file was generated by qdbusxml2cpp-fix version 0.8 * Command line was: qdbusxml2cpp-fix -c WMSwitcher -p generated/org_deepin_dde_wmswitcher1 ../xml/org.deepin.dde.WMSwitcher1.xml * * qdbusxml2cpp-fix is Copyright (C) 2016 Deepin Technology Co., Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #include "dbuswmswitcher.h" /* * Implementation of interface class __WMSwitcher */ class __WMSwitcherPrivate { public: __WMSwitcherPrivate() = default; // begin member variables public: QMap m_processingCalls; QMap> m_waittingCalls; }; __WMSwitcher::__WMSwitcher(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : DBusExtendedAbstractInterface(service, path, staticInterfaceName(), connection, parent) , d_ptr(new __WMSwitcherPrivate) { } __WMSwitcher::~__WMSwitcher() { qDeleteAll(d_ptr->m_processingCalls.values()); delete d_ptr; } void __WMSwitcher::CallQueued(const QString &callName, const QList &args) { if (d_ptr->m_waittingCalls.contains(callName)) { d_ptr->m_waittingCalls[callName] = args; return; } if (d_ptr->m_processingCalls.contains(callName)) { d_ptr->m_waittingCalls.insert(callName, args); } else { QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(asyncCallWithArgumentList(callName, args)); connect(watcher, &QDBusPendingCallWatcher::finished, this, &__WMSwitcher::onPendingCallFinished); d_ptr->m_processingCalls.insert(callName, watcher); } } void __WMSwitcher::onPendingCallFinished(QDBusPendingCallWatcher *w) { w->deleteLater(); const auto callName = d_ptr->m_processingCalls.key(w); Q_ASSERT(!callName.isEmpty()); if (callName.isEmpty()) return; d_ptr->m_processingCalls.remove(callName); if (!d_ptr->m_waittingCalls.contains(callName)) return; const auto args = d_ptr->m_waittingCalls.take(callName); CallQueued(callName, args); }