Merge branch 'mer-5.6-dev' into 'mer-5.6'

Resource policy improvements.

See merge request mer-core/qtmultimedia!26
This commit is contained in:
Juho Hamalainen
2019-05-21 07:50:37 +00:00

View File

@@ -56,16 +56,36 @@ ResourcePolicyInt::ResourcePolicyInt(QObject *parent)
{ {
const char *resourceClass = "player"; const char *resourceClass = "player";
QByteArray envVar = qgetenv("NEMO_RESOURCE_CLASS_OVERRIDE"); QByteArray envVar = qgetenv("NEMO_RESOURCE_DISABLE");
if (!envVar.isEmpty()) {
#ifdef RESOURCE_DEBUG
qDebug() << "##### Disable internal resource handling.";
#endif
m_status = GrantedResource;
m_available = true;
return;
}
envVar = qgetenv("NEMO_RESOURCE_CLASS_OVERRIDE");
if (!envVar.isEmpty()) { if (!envVar.isEmpty()) {
QString data(envVar); QString data(envVar);
// Only allow few resource classes // Only allow known resource classes
if (data == "navigator" || if (data == "proclaimer" ||
data == "navigator" ||
data == "call" || data == "call" ||
data == "videoeditor" ||
data == "camera" || data == "camera" ||
data == "ringtone" ||
data == "alarm" ||
data == "game" || data == "game" ||
data == "player" || data == "player" ||
data == "event") data == "implicit" ||
data == "event" ||
data == "background" ||
data == "alien" ||
data == "aliencall" ||
data == "nobody")
resourceClass = envVar.constData(); resourceClass = envVar.constData();
} }
@@ -132,7 +152,7 @@ void ResourcePolicyInt::removeClient(ResourcePolicyImpl *client)
if (i.value().videoEnabled) { if (i.value().videoEnabled) {
--m_video; --m_video;
if (m_video == 0) { if (m_video == 0 && m_resourceSet) {
m_resourceSet->deleteResource(ResourcePolicy::VideoPlaybackType); m_resourceSet->deleteResource(ResourcePolicy::VideoPlaybackType);
m_resourceSet->update(); m_resourceSet->update();
} }
@@ -161,6 +181,9 @@ bool ResourcePolicyInt::isVideoEnabled(const ResourcePolicyImpl *client) const
void ResourcePolicyInt::setVideoEnabled(const ResourcePolicyImpl *client, bool videoEnabled) void ResourcePolicyInt::setVideoEnabled(const ResourcePolicyImpl *client, bool videoEnabled)
{ {
if (!m_resourceSet)
return;
bool update = false; bool update = false;
QMap<const ResourcePolicyImpl*, clientEntry>::iterator i = m_clients.find(client); QMap<const ResourcePolicyImpl*, clientEntry>::iterator i = m_clients.find(client);
@@ -284,12 +307,14 @@ void ResourcePolicyInt::release(const ResourcePolicyImpl *client)
#ifdef RESOURCE_DEBUG #ifdef RESOURCE_DEBUG
qDebug() << "##### " << i.value().id << ": RELEASE call resourceSet->release()"; qDebug() << "##### " << i.value().id << ": RELEASE call resourceSet->release()";
#endif #endif
if (m_resourceSet) {
m_resourceSet->release(); m_resourceSet->release();
m_status = Initial; m_status = Initial;
} }
} }
} }
} }
}
bool ResourcePolicyInt::isGranted(const ResourcePolicyImpl *client) const bool ResourcePolicyInt::isGranted(const ResourcePolicyImpl *client) const
{ {