diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2015-09-06 13:19:56 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-10-13 07:15:08 +0000 |
commit | 4888c951fca43515aa49919a5405baa16f1cff3d (patch) | |
tree | 1f77324bfef06e1f2ecc2dcaa804f45368f4cb9c /src/logic/manager.cpp | |
parent | 07529a1c316815c8201d84b5eca8eda026facd42 (diff) |
Shorten names of classes in Logic namespace
The Logic prefix of the old class names is now redundant, remove it.
Change-Id: Ic68ae529e83bd0e571e333a66dfec8339cda3c14
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/logic/manager.cpp')
-rw-r--r-- | src/logic/manager.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/logic/manager.cpp b/src/logic/manager.cpp new file mode 100644 index 000000000..7802fc0de --- /dev/null +++ b/src/logic/manager.cpp @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "manager_p.h" +#include "qlogicaspect.h" +#include <Qt3DLogic/private/executor_p.h> +#include <Qt3DLogic/private/managers_p.h> +#include <QtCore/qcoreapplication.h> + +#include <QDebug> +#include <QThread> + +QT_BEGIN_NAMESPACE + +namespace Qt3DLogic { +namespace Logic { + +Manager::Manager() + : m_logicHandlerManager(new HandlerManager) + , m_semaphore(1) +{ + m_semaphore.acquire(); +} + +Manager::~Manager() +{ +} + +void Manager::setExecutor(Executor *executor) +{ + m_executor = executor; + if (m_executor) + m_executor->setSemephore(&m_semaphore); +} + +void Manager::appendHandler(Handler *handler) +{ + HHandler handle = m_logicHandlerManager->lookupHandle(handler->peerUuid()); + m_logicHandlers.append(handle); + m_logicComponentIds.append(handler->peerUuid()); +} + +void Manager::removeHandler(const Qt3D::QNodeId &id) +{ + HHandler handle = m_logicHandlerManager->lookupHandle(id); + m_logicComponentIds.removeAll(id); + m_logicHandlers.removeAll(handle); + m_logicHandlerManager->releaseResource(id); +} + +void Manager::triggerLogicFrameUpdates() +{ + Q_ASSERT(m_executor); + + // Don't use blocking queued connections to main thread if it is already + // in the process of shutting down as that will deadlock. + if (m_logicAspect->isShuttingDown()) + return; + + // Trigger the main thread to process logic frame updates for each + // logic component and then wait until done. The Executor will + // release the semaphore when it has completed its work. + m_executor->enqueueLogicFrameUpdates(m_logicComponentIds); + qApp->postEvent(m_executor, new FrameUpdateEvent); + m_semaphore.acquire(); +} + +} // namespace Logic +} // namespace Qt3DLogic + +QT_END_NAMESPACE |