QT_BEGIN_NAMESPACE //#define CAMEABIN_DEBUG 1 #define ENUM_NAME(c,e,v) (c::staticMetaObject.enumerator(c::staticMetaObject.indexOfEnumerator(e)).valueToKey((v))) CameraBinControl::CameraBinControl(CameraBinSession *session) :QCameraControl(session), m_session(session), m_state(QCamera::UnloadedState), m_status(QCamera::UnloadedStatus), m_reloadPending(false) { connect(m_session, SIGNAL(stateChanged(QCamera::State)), this, SLOT(updateStatus())); connect(m_session, SIGNAL(viewfinderChanged()), SLOT(reloadLater())); connect(m_session, SIGNAL(readyChanged(bool)), SLOT(reloadLater())); connect(m_session, SIGNAL(error(int,QString)), SLOT(handleCameraError(int,QString))); m_resourcePolicy = new CamerabinResourcePolicy(this); connect(m_resourcePolicy, SIGNAL(resourcesGranted()), SLOT(handleResourcesGranted())); connect(m_resourcePolicy, SIGNAL(resourcesDenied()), SLOT(handleResourcesLost())); connect(m_resourcePolicy, SIGNAL(resourcesLost()), SLOT(handleResourcesLost())); connect(m_session, SIGNAL(busyChanged(bool)), SLOT(handleBusyChanged(bool))); }
ResourceManager::ResourceManager() : QObject(), m_resources(0), m_result(false), m_waiting(false) { qRegisterMetaType<ResourcePolicy::ResourceSet*>("ResourcePolicy::ResourceSet*"); qRegisterMetaType<ResourcePolicy::ResourceType>("ResourcePolicy::ResourceType"); qRegisterMetaType<QList<ResourcePolicy::ResourceType> >("QList<ResourcePolicy::ResourceType>"); m_resources = new ResourcePolicy::ResourceSet(QString::fromAscii("camera"), this); m_resources->setAlwaysReply(); m_resources->addResource(ResourcePolicy::VideoPlaybackType); m_resources->addResource(ResourcePolicy::VideoRecorderType); QObject::connect(m_resources, SIGNAL(resourcesDenied()), this, SLOT(denied())); QObject::connect(m_resources, SIGNAL(lostResources()), this, SLOT(lost())); QObject::connect(m_resources, SIGNAL(resourcesGranted(QList<ResourcePolicy::ResourceType>)), this, SLOT(granted())); }
AlertTonePreview::~AlertTonePreview () { SYS_DEBUG ("Stopping the playback."); if (m_gstVolume) { gst_object_unref (m_gstVolume); m_gstVolume = NULL; } GstBus *bus = gst_element_get_bus (m_gstPipeline); gst_bus_remove_signal_watch (bus); gst_object_unref (bus); gst_element_set_state (m_gstPipeline, GST_STATE_NULL); gst_object_unref (m_gstPipeline); m_gstPipeline = NULL; #ifdef HAVE_LIBRESOURCEQT disconnect (resources, SIGNAL (resourcesGranted (QList<ResourcePolicy::ResourceType>)), this, SLOT (audioResourceAcquired ())); disconnect (resources, SIGNAL (lostResources ()), this, SLOT (audioResourceLost())); resources->release (); #endif }
VolumeControl::VolumeControl(QObject *parent) : QObject(parent), window(0), pulseAudioControl(new PulseAudioControl(this)), hwKeyResource(new ResourcePolicy::ResourceSet("event")), hwKeysAcquired(false), volume_(0), maximumVolume_(0), audioWarning(new MGConfItem("/desktop/nemo/audiowarning", this)), safeVolume_(0), callActive_(false) { hwKeyResource->setAlwaysReply(); hwKeyResource->addResourceObject(new ResourcePolicy::ScaleButtonResource); connect(hwKeyResource, SIGNAL(resourcesGranted(QList<ResourcePolicy::ResourceType>)), this, SLOT(hwKeyResourceAcquired())); connect(hwKeyResource, SIGNAL(lostResources()), this, SLOT(hwKeyResourceLost())); // Set up key repeat: initial delay and per-repeat delay keyRepeatDelayTimer.setSingleShot(true); keyRepeatDelayTimer.setInterval(600); keyRepeatTimer.setInterval(75); connect(&keyRepeatDelayTimer, SIGNAL(timeout()), &keyRepeatTimer, SLOT(start())); connect(&keyRepeatTimer, SIGNAL(timeout()), this, SLOT(changeVolume())); connect(pulseAudioControl, SIGNAL(volumeChanged(int,int)), this, SLOT(setVolume(int,int))); connect(pulseAudioControl, SIGNAL(highVolume(int)), SLOT(handleHighVolume(int))); connect(pulseAudioControl, SIGNAL(longListeningTime(int)), SLOT(handleLongListeningTime(int))); connect(pulseAudioControl, SIGNAL(callActiveChanged(bool)), SLOT(handleCallActive(bool))); pulseAudioControl->update(); qApp->installEventFilter(this); acquireKeys(); }
void PlayerResourcePolicy::handleResourcesGranted() { m_status = GrantedResource; #ifdef DEBUG_RESOURCE_POLICY qDebug() << Q_FUNC_INFO << "Resource granted"; #endif emit resourcesGranted(); }
QT_BEGIN_NAMESPACE QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *session, QObject *parent) : QMediaPlayerControl(parent) , m_ownStream(false) , m_session(session) , m_userRequestedState(QMediaPlayer::StoppedState) , m_currentState(QMediaPlayer::StoppedState) , m_mediaStatus(QMediaPlayer::NoMedia) , m_bufferProgress(-1) , m_pendingSeekPosition(-1) , m_setMediaPending(false) , m_stream(0) { m_resources = QMediaResourcePolicy::createResourceSet<QMediaPlayerResourceSetInterface>(); Q_ASSERT(m_resources); connect(m_session, SIGNAL(positionChanged(qint64)), this, SIGNAL(positionChanged(qint64))); connect(m_session, SIGNAL(durationChanged(qint64)), this, SIGNAL(durationChanged(qint64))); connect(m_session, SIGNAL(mutedStateChanged(bool)), this, SIGNAL(mutedChanged(bool))); connect(m_session, SIGNAL(volumeChanged(int)), this, SIGNAL(volumeChanged(int))); connect(m_session, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(updateSessionState(QMediaPlayer::State))); connect(m_session,SIGNAL(bufferingProgressChanged(int)), this, SLOT(setBufferProgress(int))); connect(m_session, SIGNAL(playbackFinished()), this, SLOT(processEOS())); connect(m_session, SIGNAL(audioAvailableChanged(bool)), this, SIGNAL(audioAvailableChanged(bool))); connect(m_session, SIGNAL(videoAvailableChanged(bool)), this, SIGNAL(videoAvailableChanged(bool))); connect(m_session, SIGNAL(seekableChanged(bool)), this, SIGNAL(seekableChanged(bool))); connect(m_session, SIGNAL(error(int,QString)), this, SIGNAL(error(int,QString))); connect(m_session, SIGNAL(invalidMedia()), this, SLOT(handleInvalidMedia())); connect(m_session, SIGNAL(playbackRateChanged(qreal)), this, SIGNAL(playbackRateChanged(qreal))); connect(m_resources, SIGNAL(resourcesGranted()), SLOT(handleResourcesGranted())); //denied signal should be queued to have correct state update process, //since in playOrPause, when acquire is call on resource set, it may trigger a resourcesDenied signal immediately, //so handleResourcesDenied should be processed later, otherwise it will be overwritten by state update later in playOrPause. connect(m_resources, SIGNAL(resourcesDenied()), this, SLOT(handleResourcesDenied()), Qt::QueuedConnection); connect(m_resources, SIGNAL(resourcesLost()), SLOT(handleResourcesLost())); }
ResourcePolicyInt::ResourcePolicyInt(QObject *parent) : QObject(parent) , m_acquired(0) , m_status(Initial) , m_video(0) , m_available(false) , m_resourceSet(0) { const char *resourceClass = "player"; QByteArray envVar = qgetenv("NEMO_RESOURCE_CLASS_OVERRIDE"); if (!envVar.isEmpty()) { QString data(envVar); // Only allow few resource classes if (data == "navigator" || data == "call" || data == "camera" || data == "game" || data == "player" || data == "event") resourceClass = envVar.constData(); } #ifdef RESOURCE_DEBUG qDebug() << "##### Using resource class " << resourceClass; #endif m_resourceSet = new ResourcePolicy::ResourceSet(resourceClass, this); m_resourceSet->setAlwaysReply(); connect(m_resourceSet, SIGNAL(resourcesGranted(QList<ResourcePolicy::ResourceType>)), this, SLOT(handleResourcesGranted())); connect(m_resourceSet, SIGNAL(resourcesDenied()), this, SLOT(handleResourcesDenied())); connect(m_resourceSet, SIGNAL(resourcesReleased()), this, SLOT(handleResourcesReleased())); connect(m_resourceSet, SIGNAL(lostResources()), this, SLOT(handleResourcesLost())); connect(m_resourceSet, SIGNAL(resourcesReleasedByManager()), this, SLOT(handleResourcesReleasedByManager())); connect(m_resourceSet, SIGNAL(resourcesBecameAvailable(const QList<ResourcePolicy::ResourceType>)), this, SLOT(handleResourcesBecameAvailable(const QList<ResourcePolicy::ResourceType>))); ResourcePolicy::AudioResource *audioResource = new ResourcePolicy::AudioResource(resourceClass); audioResource->setProcessID(QCoreApplication::applicationPid()); audioResource->setStreamTag("media.name", "*"); m_resourceSet->addResourceObject(audioResource); m_resourceSet->update(); }
void AlertTonePreview::getResources() { /* * Create these objects only once during the run... */ if (! resources) { resources = new ResourcePolicy::ResourceSet ("player"); resources->setAutoRelease (); resources->setAlwaysReply (); } if (! audioResource) { /* * This is for the libresource to be able to identify our pulseaudio stream, * so this is very important that the same key-value pair should be set * for the pulsesink. The value should be uniqe. */ audioResource = new ResourcePolicy::AudioResource ("player"); audioResource->setProcessID (QApplication::applicationPid ()); audioResource->setStreamTag("media.name", "*"); resources->addResourceObject (audioResource); resources->initAndConnect (); } connect (resources, SIGNAL (resourcesGranted (QList<ResourcePolicy::ResourceType>)), SLOT (audioResourceAcquired ())); connect (resources, SIGNAL (lostResources ()), SLOT (audioResourceLost ())); connect (resources, SIGNAL (resourcesReleasedByManager ()), SLOT (audioResourceLost ())); resources->acquire (); }
VolumeBarLogic::VolumeBarLogic(QObject *parent) : QObject(parent), volumeBarWindow(NULL), currentvolume (0), currentmax (0), hwkeys(new keySniffer()), mHideTimer(new QTimer()) { mHideTimer->setSingleShot(TRUE); openConnection(); #if (HAVE_LIBRESOURCEQT) hwkeyResource = new ResourcePolicy::ResourceSet("event"); hwkeyResource->setAlwaysReply(); ResourcePolicy::ScaleButtonResource *volumeKeys = new ResourcePolicy::ScaleButtonResource; hwkeyResource->addResourceObject(volumeKeys); connect(hwkeyResource, SIGNAL(resourcesGranted(QList<ResourcePolicy::ResourceType>)), this, SLOT(hwKeyResourceAcquired())); connect(hwkeyResource, SIGNAL(lostResources()), this, SLOT(hwKeyResourceLost())); hwkeyResource->acquire(); #endif }
VolumeBarLogic::VolumeBarLogic(QObject *parent) : QObject(parent), volumeBarWindow(NULL), dbus_conn (NULL), currentvolume (0), currentmax (0) #if (HAVE_LIBRESOURCEQT && HAVE_QMSYSTEM) ,hwkeys(new MeeGo::QmKeys(this)) #endif { openConnection (true); #if (HAVE_LIBRESOURCEQT && HAVE_QMSYSTEM) hwkeyResource = new ResourcePolicy::ResourceSet("event"); hwkeyResource->setAlwaysReply(); ResourcePolicy::ScaleButtonResource *volumeKeys = new ResourcePolicy::ScaleButtonResource; hwkeyResource->addResourceObject(volumeKeys); connect(hwkeyResource, SIGNAL(resourcesGranted(QList<ResourcePolicy::ResourceType>)), this, SLOT(hwKeyResourceAcquired())); connect(hwkeyResource, SIGNAL(lostResources()), this, SLOT(hwKeyResourceLost())); hwkeyResource->acquire(); #endif }