@@ -60,9 +60,8 @@ MirSurface::MirSurface(const QString& name,
60 Mir::Type type,
60 Mir::Type type,
61 Mir::State state,
61 Mir::State state,
62 const QUrl& screenshot,
62 const QUrl& screenshot,
63− const QUrl &qmlFilePath,
63+ const QUrl &qmlFilePath)
65− : unity::shell::application::MirSurfaceInterface(parent)
64+ : unity::shell::application::MirSurfaceInterface(nullptr)
66 , m_name(name)
65 , m_name(name)
67 , m_type(type)
66 , m_type(type)
68 , m_state(state)
67 , m_state(state)
@@ -95,7 +94,7 @@ MirSurface::~MirSurface()
95 DEBUG_MSG("");
94 DEBUG_MSG("");
97 auto controller = MirFocusController::instance();
96 auto controller = MirFocusController::instance();
98− if (controller->focusedSurface() == this) {
97+ if (controller && controller->focusedSurface() == this) {
99 controller->clear();
98 controller->clear();
@@ -436,7 +435,12 @@ void MirSurface::requestFocus()
436void MirSurface::setFocused(bool value)
435void MirSurface::setFocused(bool value)
438 DEBUG_MSG(value);
437 DEBUG_MSG(value);
439 auto controller = MirFocusController::instance();
439 auto controller = MirFocusController::instance();
440 if (value) {
444 if (value) {
441 controller->setFocusedSurface(this);
445 controller->setFocusedSurface(this);
442 } else if (controller->focusedSurface() == this) {
446 } else if (controller->focusedSurface() == this) {
@@ -446,7 +450,9 @@ void MirSurface::setFocused(bool value)
447bool MirSurface::focused() const
451bool MirSurface::focused() const
449− return MirFocusController::instance()->focusedSurface() == this;
453+ auto controller = MirFocusController::instance();
455+ return controller ? controller->focusedSurface() == this : false;
452#if MIRSURFACE_DEBUG
458#if MIRSURFACE_DEBUG
@@ -479,12 +485,21 @@ void MirFocusController::setFocusedSurface(MirSurfaceInterface *surface)
480MirFocusController* MirFocusController::instance()
486MirFocusController* MirFocusController::instance()
483− m_instance = new MirFocusController;
485 return m_instance;
488 return m_instance;
491+MirFocusController::MirFocusController()
493+ Q_ASSERT(m_instance == nullptr);
497+MirFocusController::~MirFocusController()
499+ Q_ASSERT(m_instance == this);
500+ m_instance = nullptr;
488void MirFocusController::clear()
503void MirFocusController::clear()
490 m_focusedSurface = m_previouslyFocusedSurface = nullptr;
505 m_focusedSurface = m_previouslyFocusedSurface = nullptr;