Showing the changes to interface/src/Application.cpp (1 of 1 file). Show all
Unified · Split
| @@ -4886,6 +4886,7 @@ void Application::updateDisplayMode() { · 4885 unmodified lines | ||
| 4886 | 4886 | { |
| 4887 | 4887 | std::unique_lock<std::mutex> lock(_displayPluginLock); |
| 4888 | 4888 | |
| 4889 | + auto oldDisplayPlugin = _displayPlugin; | |
| 4889 | 4890 | if (_displayPlugin) { |
| 4890 | 4891 | _displayPlugin->deactivate(); |
| 4891 | 4892 | } |
| @@ -4893,12 +4894,27 @@ void Application::updateDisplayMode() { · 1 unmodified line | ||
| 4893 | 4894 | // FIXME probably excessive and useless context switching |
| 4894 | 4895 | _offscreenContext->makeCurrent(); |
| 4895 | 4896 | |
| 4896 | − // If the new plugin fails to activate, fallback to first item on the list | |
| 4897 | − if (!newDisplayPlugin->activate()) { | |
| 4898 | − qWarning() << "Failed to activate plugin: " << newDisplayPlugin->getName(); | |
| 4899 | − newDisplayPlugin = displayPlugins.at(0); | |
| 4900 | − qWarning() << "Activating fallback plugin: " << newDisplayPlugin->getName(); | |
| 4901 | − if (!newDisplayPlugin->activate()) { | |
| 4897 | + bool active = newDisplayPlugin->activate(); | |
| 4898 | + | |
| 4899 | + if (!active) { | |
| 4900 | + // If the new plugin fails to activate, fallback to last display | |
| 4901 | + qWarning() << "Failed to activate display: " << newDisplayPlugin->getName(); | |
| 4902 | + newDisplayPlugin = oldDisplayPlugin; | |
| 4903 | + | |
| 4904 | + if (newDisplayPlugin) { | |
| 4905 | + qWarning() << "Falling back to last display: " << newDisplayPlugin->getName(); | |
| 4906 | + active = newDisplayPlugin->activate(); | |
| 4907 | + } | |
| 4908 | + | |
| 4909 | + // If there is no last display, or | |
| 4910 | + // If the last display fails to activate, fallback to desktop | |
| 4911 | + if (!active) { | |
| 4912 | + newDisplayPlugin = displayPlugins.at(0); | |
| 4913 | + qWarning() << "Falling back to display: " << newDisplayPlugin->getName(); | |
| 4914 | + active = newDisplayPlugin->activate(); | |
| 4915 | + } | |
| 4916 | + | |
| 4917 | + if (!active) { | |
| 4902 | 4918 | qFatal("Failed to activate fallback plugin"); |
| 4903 | 4919 | } |
| 4904 | 4920 | } |