summaryrefslogtreecommitdiffstats
path: root/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp')
-rw-r--r--src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp200
1 files changed, 0 insertions, 200 deletions
diff --git a/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp b/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp
deleted file mode 100644
index de5e3e0cf..000000000
--- a/src/plugins/qnx/mediaplayer/ppsmediaplayercontrol.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Research In Motion
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://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.LGPL3 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-3.0.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 (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "ppsmediaplayercontrol.h"
-#include "mmrenderervideowindowcontrol.h"
-
-#include <QtCore/qfile.h>
-#include <QtCore/qsocketnotifier.h>
-#include <QtCore/private/qcore_unix_p.h>
-
-#include <screen/screen.h>
-#include <sys/pps.h>
-
-QT_BEGIN_NAMESPACE
-
-PpsMediaPlayerControl::PpsMediaPlayerControl(QObject *parent)
- : MmRendererMediaPlayerControl(parent),
- m_ppsStatusNotifier(0),
- m_ppsStatusFd(-1),
- m_ppsStateNotifier(0),
- m_ppsStateFd(-1)
- , m_previouslySeenState("stopped")
-{
- openConnection();
-}
-
-PpsMediaPlayerControl::~PpsMediaPlayerControl()
-{
- destroy();
-}
-
-void PpsMediaPlayerControl::startMonitoring(int, const QString &contextName)
-{
- const QString ppsContextPath = QStringLiteral("/pps/services/multimedia/renderer/context/%1/").arg(contextName);
- const QString ppsStatusPath = ppsContextPath + QStringLiteral("/status");
-
- Q_ASSERT(m_ppsStatusFd == -1);
- errno = 0;
- m_ppsStatusFd = qt_safe_open(QFile::encodeName(ppsStatusPath).constData(), O_RDONLY);
- if (m_ppsStatusFd == -1) {
- emitPError(QStringLiteral("Unable to open %1: %2").arg(ppsStatusPath, qt_error_string(errno)));
- return;
- }
-
- Q_ASSERT(!m_ppsStatusNotifier);
- m_ppsStatusNotifier = new QSocketNotifier(m_ppsStatusFd, QSocketNotifier::Read);
- connect(m_ppsStatusNotifier, SIGNAL(activated(int)), this, SLOT(ppsReadyRead(int)));
-
-
- const QString ppsStatePath = ppsContextPath + QStringLiteral("/state");
-
- Q_ASSERT(m_ppsStateFd == -1);
- errno = 0;
- m_ppsStateFd = qt_safe_open(QFile::encodeName(ppsStatePath).constData(), O_RDONLY);
- if (m_ppsStateFd == -1) {
- emitPError(QStringLiteral("Unable to open %1: %2").arg(ppsStatePath, qt_error_string(errno)));
- return;
- }
-
- Q_ASSERT(!m_ppsStateNotifier);
- m_ppsStateNotifier = new QSocketNotifier(m_ppsStateFd, QSocketNotifier::Read);
- connect(m_ppsStateNotifier, SIGNAL(activated(int)), this, SLOT(ppsReadyRead(int)));
-
- //ensure we receive any initial state
- ppsReadyRead(m_ppsStatusFd);
- ppsReadyRead(m_ppsStateFd);
-}
-
-void PpsMediaPlayerControl::stopMonitoring()
-{
-
- if (m_ppsStatusFd != -1) {
- ::close(m_ppsStatusFd);
- m_ppsStatusFd = -1;
- }
-
- delete m_ppsStatusNotifier;
- m_ppsStatusNotifier = 0;
-
- if (m_ppsStateFd != -1) {
- ::close(m_ppsStateFd);
- m_ppsStateFd = -1;
- }
-
- delete m_ppsStateNotifier;
- m_ppsStateNotifier = 0;
-}
-
-bool PpsMediaPlayerControl::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
-{
- Q_UNUSED(result)
- if (eventType == "screen_event_t") {
- screen_event_t event = static_cast<screen_event_t>(message);
- if (MmRendererVideoWindowControl *control = videoWindowControl())
- control->screenEventHandler(event);
- }
-
- return false;
-}
-
-void PpsMediaPlayerControl::ppsReadyRead(int fd)
-{
- Q_ASSERT(fd == m_ppsStateFd || fd == m_ppsStatusFd);
- const int bufferSize = 2048;
- char buffer[bufferSize];
- const ssize_t nread = qt_safe_read(fd, buffer, bufferSize - 1);
- if (nread < 0) {
- //TODO emit error?
- }
-
- if (nread == 0) {
- return;
- }
-
- // nread is the real space necessary, not the amount read.
- if (static_cast<size_t>(nread) > bufferSize - 1) {
- //TODO emit error?
- qCritical("BBMediaPlayerControl: PPS buffer size too short; need %u.", nread + 1);
- return;
- }
-
- buffer[nread] = 0;
-
- pps_decoder_t decoder;
-
- if (pps_decoder_initialize(&decoder, buffer) != PPS_DECODER_OK) {
- //TODO emit error?
- qCritical("Could not initialize pps_decoder");
- pps_decoder_cleanup(&decoder);
- return;
- }
-
- pps_decoder_push(&decoder, 0);
-
- const char *value = 0;
-
- if (pps_decoder_get_string(&decoder, "bufferstatus", &value) == PPS_DECODER_OK)
- setMmBufferStatus(QString::fromLatin1(value));
-
- if (pps_decoder_get_string(&decoder, "bufferlevel", &value) == PPS_DECODER_OK)
- setMmBufferLevel(QString::fromLatin1(value));
-
- if (pps_decoder_get_string(&decoder, "state", &value) == PPS_DECODER_OK) {
- const QByteArray state = value;
- if (state != m_previouslySeenState && state == "stopped")
- handleMmStopped();
- m_previouslySeenState = state;
- }
-
- if (pps_decoder_get_string(&decoder, "position", &value) == PPS_DECODER_OK) {
- const QByteArray valueBa = QByteArray(value);
- bool ok;
- const qint64 position = valueBa.toLongLong(&ok);
- if (!ok) {
- qCritical("Could not parse position from '%s'", valueBa.constData());
- } else {
- setMmPosition(position);
- }
- }
-
- pps_decoder_cleanup(&decoder);
-}
-
-QT_END_NAMESPACE