~ted/qtmir/ual-pause

« back to all changes in this revision

Viewing changes to src/modules/Unity/Application/application_manager.cpp

  • Committer: Ted Gould
  • Date: 2014-09-25 21:27:01 UTC
  • mfrom: (252.1.2 qtmir)
  • Revision ID: ted@gould.cx-20140925212701-tcfw1115foj21zdg
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
439
439
        return nullptr;
440
440
    }
441
441
 
442
 
    application = new Application(
443
 
                m_taskController,
444
 
                m_desktopFileReaderFactory->createInstance(appId, m_taskController->findDesktopFileForAppId(appId)),
445
 
                Application::Starting,
446
 
                arguments,
447
 
                this);
448
 
 
449
 
    if (!application->isValid()) {
450
 
        qWarning() << "Unable to instantiate application with appId" << appId;
451
 
        return nullptr;
452
 
    }
453
 
 
454
 
    // override stage if necessary
455
 
    if (application->stage() == Application::SideStage && flags.testFlag(ApplicationManager::ForceMainStage)) {
456
 
        application->setStage(Application::MainStage);
457
 
    }
458
 
 
459
 
    add(application);
 
442
    // The TaskController may synchroneously callback onProcessStarting, so check if application already added
 
443
    application = findApplication(appId);
 
444
    if (application) {
 
445
        application->setArguments(arguments);
 
446
    } else {
 
447
        application = new Application(
 
448
                    m_taskController,
 
449
                    m_desktopFileReaderFactory->createInstance(appId, m_taskController->findDesktopFileForAppId(appId)),
 
450
                    Application::Starting,
 
451
                    arguments,
 
452
                    this);
 
453
 
 
454
        if (!application->isValid()) {
 
455
            qWarning() << "Unable to instantiate application with appId" << appId;
 
456
            return nullptr;
 
457
        }
 
458
 
 
459
        // override stage if necessary
 
460
        if (application->stage() == Application::SideStage && flags.testFlag(ApplicationManager::ForceMainStage)) {
 
461
            application->setStage(Application::MainStage);
 
462
        }
 
463
 
 
464
        add(application);
 
465
    }
460
466
    return application;
461
467
}
462
468