diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7638d765c9..1d83e9e44a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -456,7 +456,6 @@ set(kwin_SRCS
netinfo.cpp
onscreennotification.cpp
options.cpp
- orientation_sensor.cpp
osd.cpp
outline.cpp
outputscreens.cpp
@@ -562,7 +561,6 @@ qt5_add_dbus_adaptor(kwin_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterf
qt5_add_dbus_adaptor(kwin_SRCS org.kde.kwin.Compositing.xml dbusinterface.h KWin::CompositorDBusInterface)
qt5_add_dbus_adaptor(kwin_SRCS org.kde.kwin.ColorCorrect.xml colorcorrection/colorcorrectdbusinterface.h KWin::ColorCorrect::ColorCorrectDBusInterface)
qt5_add_dbus_adaptor(kwin_SRCS ${kwin_effects_dbus_xml} effects.h KWin::EffectsHandlerImpl)
-qt5_add_dbus_adaptor(kwin_SRCS org.kde.kwin.OrientationSensor.xml orientation_sensor.h KWin::OrientationSensor)
qt5_add_dbus_adaptor(kwin_SRCS org.kde.KWin.VirtualDesktopManager.xml dbusinterface.h KWin::VirtualDesktopManagerDBusInterface)
qt5_add_dbus_adaptor(kwin_SRCS org.kde.KWin.Session.xml sm.h KWin::SessionManager)
diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt
index 5ce2807040..40ce86eeb2 100644
--- a/autotests/CMakeLists.txt
+++ b/autotests/CMakeLists.txt
@@ -167,7 +167,6 @@ ecm_mark_as_test(testBuiltInEffectLoader)
include_directories(${KWin_SOURCE_DIR})
set(testScriptedEffectLoader_SRCS
../effectloader.cpp
- ../orientation_sensor.cpp
../screens.cpp
../scripting/scriptedeffect.cpp
../scripting/scripting_logging.cpp
@@ -179,7 +178,6 @@ set(testScriptedEffectLoader_SRCS
test_scripted_effectloader.cpp
)
kconfig_add_kcfg_files(testScriptedEffectLoader_SRCS ../settings.kcfgc)
-qt5_add_dbus_adaptor(testScriptedEffectLoader_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/../org.kde.kwin.OrientationSensor.xml ${CMAKE_CURRENT_SOURCE_DIR}/../orientation_sensor.h KWin::OrientationSensor)
add_executable(testScriptedEffectLoader ${testScriptedEffectLoader_SRCS})
target_link_libraries(testScriptedEffectLoader
@@ -245,7 +243,6 @@ target_link_libraries(effectversionplugin kwineffects)
# Test Screens
########################################################
set(testScreens_SRCS
- ../orientation_sensor.cpp
../screens.cpp
../x11eventfilter.cpp
mock_abstract_client.cpp
@@ -255,7 +252,6 @@ set(testScreens_SRCS
test_screens.cpp
)
kconfig_add_kcfg_files(testScreens_SRCS ../settings.kcfgc)
-qt5_add_dbus_adaptor(testScreens_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/../org.kde.kwin.OrientationSensor.xml ${CMAKE_CURRENT_SOURCE_DIR}/../orientation_sensor.h KWin::OrientationSensor)
add_executable(testScreens ${testScreens_SRCS})
target_include_directories(testScreens BEFORE PRIVATE ./)
@@ -282,7 +278,6 @@ ecm_mark_as_test(testScreens)
set(testScreenEdges_SRCS
../atoms.cpp
../gestures.cpp
- ../orientation_sensor.cpp
../plugins/platforms/x11/standalone/edge.cpp
../screenedge.cpp
../screens.cpp
@@ -296,7 +291,6 @@ set(testScreenEdges_SRCS
)
kconfig_add_kcfg_files(testScreenEdges_SRCS ../settings.kcfgc)
qt5_add_dbus_interface(testScreenEdges_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/kf5_org.freedesktop.ScreenSaver.xml screenlocker_interface )
-qt5_add_dbus_adaptor(testScreenEdges_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/../org.kde.kwin.OrientationSensor.xml ${CMAKE_CURRENT_SOURCE_DIR}/../orientation_sensor.h KWin::OrientationSensor)
add_executable(testScreenEdges ${testScreenEdges_SRCS})
set_target_properties(testScreenEdges PROPERTIES COMPILE_DEFINITIONS "NO_NONE_WINDOW")
diff --git a/libinput/connection.cpp b/libinput/connection.cpp
index cc5628ea17..7bb3bcd1fb 100644
--- a/libinput/connection.cpp
+++ b/libinput/connection.cpp
@@ -661,6 +661,8 @@ void Connection::applyScreenToDevice(Device *device)
}
}
device->setScreenId(id);
+
+ // TODO: this is currently non-functional even on DRM. Needs orientation() override there.
device->setOrientation(screens()->orientation(id));
#else
Q_UNUSED(device)
diff --git a/org.kde.kwin.OrientationSensor.xml b/org.kde.kwin.OrientationSensor.xml
deleted file mode 100644
index 12f245c624..0000000000
--- a/org.kde.kwin.OrientationSensor.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/orientation_sensor.cpp b/orientation_sensor.cpp
deleted file mode 100644
index d3a263efa4..0000000000
--- a/orientation_sensor.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/********************************************************************
- KWin - the KDE window manager
- This file is part of the KDE project.
-
-Copyright (C) 2017 Martin Flöser
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*********************************************************************/
-#include "orientation_sensor.h"
-#include
-
-#include
-#include
-
-#include
-#include
-#include
-
-namespace KWin
-{
-
-OrientationSensor::OrientationSensor(QObject *parent)
- : QObject(parent)
- , m_sensor(new QOrientationSensor(this))
-{
- connect(m_sensor, &QOrientationSensor::readingChanged, this, &OrientationSensor::updateState);
- connect(m_sensor, &QOrientationSensor::activeChanged, this, &OrientationSensor::refresh);
-
- new OrientationSensorAdaptor(this);
-}
-
-void OrientationSensor::updateState()
-{
- auto toOrientation = [] (auto reading) {
- switch (reading->orientation()) {
- case QOrientationReading::Undefined:
- return OrientationSensor::Orientation::Undefined;
- case QOrientationReading::TopUp:
- return OrientationSensor::Orientation::TopUp;
- case QOrientationReading::TopDown:
- return OrientationSensor::Orientation::TopDown;
- case QOrientationReading::LeftUp:
- return OrientationSensor::Orientation::LeftUp;
- case QOrientationReading::RightUp:
- return OrientationSensor::Orientation::RightUp;
- case QOrientationReading::FaceUp:
- return OrientationSensor::Orientation::FaceUp;
- case QOrientationReading::FaceDown:
- return OrientationSensor::Orientation::FaceDown;
- default:
- Q_UNREACHABLE();
- }
- };
- const auto orientation = toOrientation(m_sensor->reading());
- if (m_orientation != orientation) {
- m_orientation = orientation;
- emit orientationChanged();
- }
-}
-
-void OrientationSensor::activate()
-{
- m_userEnabled = !m_userEnabled;
- startStopSensor();
- emit userEnabledChanged(m_userEnabled);
-}
-
-void OrientationSensor::refresh()
-{
- if (m_orientation == Orientation::Undefined) {
- delete m_sni;
- m_sni = nullptr;
- return;
- }
-
- if (!m_sni) {
- m_sni = new KStatusNotifierItem(QStringLiteral("kwin-automatic-rotation"), this);
- m_sni->setStandardActionsEnabled(false);
- m_sni->setCategory(KStatusNotifierItem::Hardware);
- m_sni->setStatus(KStatusNotifierItem::Passive);
- // TODO: proper icon with state
- m_sni->setIconByName(QStringLiteral("preferences-desktop-display"));
- // we start disabled, it gets updated when the sensor becomes active
-
- connect(m_sni, &KStatusNotifierItem::activateRequested, this, &OrientationSensor::activate);
- }
-
- if (m_sensor->isActive()) {
- m_sni->setTitle(i18n("Allow Rotation"));
- m_sni->setToolTipTitle(i18n("Automatic screen rotation is enabled"));
- updateState();
- } else {
- QString text;
- switch(m_orientation) {
- case Orientation::Undefined:
- Q_UNREACHABLE(); //we don't want an sni if it's undefined
- break;
- case Orientation::FaceUp:
- case Orientation::FaceDown:
- text = i18n("Undefined");
- break;
- case Orientation::TopUp:
- case Orientation::TopDown:
- text = i18nc("Portrait oriented display", "Vertical");
- break;
- case Orientation::LeftUp:
- case Orientation::RightUp:
- text = i18nc("Landscape oriented display", "Horizontal");
- break;
- }
- m_sni->setTitle(text);
- m_sni->setToolTipTitle(i18n("Automatic screen rotation is disabled"));
- }
-}
-
-OrientationSensor::~OrientationSensor() = default;
-
-void OrientationSensor::setEnabled(bool enabled)
-{
- if (m_enabled == enabled) {
- return;
- }
- m_enabled = enabled;
- if (m_enabled) {
- loadConfig();
- refresh();
- QDBusConnection::sessionBus().registerObject(QStringLiteral("/Orientation"), this);
- } else {
- QDBusConnection::sessionBus().unregisterObject(QStringLiteral("/Orientation"));
- delete m_sni;
- m_sni = nullptr;
- }
- startStopSensor();
-}
-
-void OrientationSensor::loadConfig()
-{
- if (!m_config) {
- return;
- }
- m_userEnabled = m_config->group("OrientationSensor").readEntry("Enabled", true);
-}
-
-void OrientationSensor::startStopSensor()
-{
- if (m_enabled && m_userEnabled) {
- m_sensor->start();
- } else {
- m_sensor->stop();
- }
-}
-
-void OrientationSensor::setUserEnabled(bool enabled)
-{
- if (m_userEnabled == enabled) {
- return;
- }
- m_userEnabled = enabled;
- if (m_config) {
- m_config->group("OrientationSensor").writeEntry("Enabled", m_userEnabled);
- }
- emit userEnabledChanged(m_userEnabled);
-}
-
-}
diff --git a/orientation_sensor.h b/orientation_sensor.h
deleted file mode 100644
index e585974081..0000000000
--- a/orientation_sensor.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/********************************************************************
- KWin - the KDE window manager
- This file is part of the KDE project.
-
-Copyright (C) 2017 Martin Flöser
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*********************************************************************/
-#pragma once
-
-#include
-
-#include
-
-#include
-
-class QOrientationSensor;
-class KStatusNotifierItem;
-
-namespace KWin
-{
-
-class KWIN_EXPORT OrientationSensor : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(bool userEnabled READ isUserEnabled WRITE setUserEnabled NOTIFY userEnabledChanged)
-public:
- explicit OrientationSensor(QObject *parent = nullptr);
- ~OrientationSensor() override;
-
- void setEnabled(bool enabled);
-
- /**
- * Just like QOrientationReading::Orientation,
- * copied to not leak the QSensors API into internal API.
- */
- enum class Orientation {
- Undefined,
- TopUp,
- TopDown,
- LeftUp,
- RightUp,
- FaceUp,
- FaceDown
- };
- Q_ENUM(Orientation)
-
- Orientation orientation() const {
- return m_orientation;
- }
-
- void setConfig(KSharedConfig::Ptr config) {
- m_config = std::move(config);
- }
-
- bool isUserEnabled() const {
- return m_userEnabled;
- }
- void setUserEnabled(bool enabled);
-
-Q_SIGNALS:
- void orientationChanged();
- void userEnabledChanged(bool);
-
-private:
- void startStopSensor();
- void loadConfig();
- void refresh();
- void activate();
- void updateState();
-
- QOrientationSensor *m_sensor;
- bool m_enabled = false;
- bool m_userEnabled = true;
- Orientation m_orientation = Orientation::Undefined;
- KStatusNotifierItem *m_sni = nullptr;
- KSharedConfig::Ptr m_config;
-};
-
-}
diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/drm_output.cpp
index fafda9d4ca..09c41106f8 100644
--- a/plugins/platforms/drm/drm_output.cpp
+++ b/plugins/platforms/drm/drm_output.cpp
@@ -27,7 +27,6 @@ along with this program. If not, see .
#include "logind.h"
#include "logging.h"
#include "main.h"
-#include "orientation_sensor.h"
#include "screens_drm.h"
#include "wayland_server.h"
// KWayland
@@ -270,15 +269,6 @@ bool DrmOutput::init(drmModeConnector *connector)
setInternal(connector->connector_type == DRM_MODE_CONNECTOR_LVDS || connector->connector_type == DRM_MODE_CONNECTOR_eDP
|| connector->connector_type == DRM_MODE_CONNECTOR_DSI);
setDpmsSupported(true);
-
- if (isInternal()) {
- connect(kwinApp(), &Application::screensCreated, this,
- [this] {
- connect(screens()->orientationSensor(), &OrientationSensor::orientationChanged, this, &DrmOutput::automaticRotation);
- }
- );
- }
-
initOutputDevice(connector);
if (!m_backend->atomicModeSetting() && !m_crtc->blank()) {
@@ -1087,47 +1077,6 @@ bool DrmOutput::supportsTransformations() const
|| transformations.testFlag(DrmPlane::Transformation::Rotate270);
}
-void DrmOutput::automaticRotation()
-{
- if (!m_primaryPlane) {
- return;
- }
- const auto supportedTransformations = m_primaryPlane->supportedTransformations();
- const auto requestedTransformation = screens()->orientationSensor()->orientation();
-
- Transform newTransformation = Transform::Normal;
- switch (requestedTransformation) {
- case OrientationSensor::Orientation::TopUp:
- newTransformation = Transform::Normal;
- break;
- case OrientationSensor::Orientation::TopDown:
- if (!supportedTransformations.testFlag(DrmPlane::Transformation::Rotate180)) {
- return;
- }
- newTransformation = Transform::Rotated180;
- break;
- case OrientationSensor::Orientation::LeftUp:
- if (!supportedTransformations.testFlag(DrmPlane::Transformation::Rotate90)) {
- return;
- }
- newTransformation = Transform::Rotated90;
- break;
- case OrientationSensor::Orientation::RightUp:
- if (!supportedTransformations.testFlag(DrmPlane::Transformation::Rotate270)) {
- return;
- }
- newTransformation = Transform::Rotated270;
- break;
- case OrientationSensor::Orientation::FaceUp:
- case OrientationSensor::Orientation::FaceDown:
- case OrientationSensor::Orientation::Undefined:
- // unsupported
- return;
- }
- setTransform(newTransformation);
- emit screens()->changed();
-}
-
int DrmOutput::gammaRampSize() const
{
return m_crtc->gammaRampSize();
diff --git a/plugins/platforms/drm/drm_output.h b/plugins/platforms/drm/drm_output.h
index 878a9b1643..4681b38db1 100644
--- a/plugins/platforms/drm/drm_output.h
+++ b/plugins/platforms/drm/drm_output.h
@@ -139,7 +139,6 @@ private:
void setWaylandMode();
void updateTransform(Transform transform) override;
- void automaticRotation();
int gammaRampSize() const override;
bool setGammaRamp(const GammaRamp &gamma) override;
diff --git a/screens.cpp b/screens.cpp
index 02cddc6ee9..a83870847a 100644
--- a/screens.cpp
+++ b/screens.cpp
@@ -21,7 +21,6 @@ along with this program. If not, see .
#include
#include
#include "cursor.h"
-#include "orientation_sensor.h"
#include "utils.h"
#include "settings.h"
#include
@@ -55,21 +54,8 @@ Screens::Screens(QObject *parent)
, m_current(0)
, m_currentFollowsMouse(false)
, m_changedTimer(new QTimer(this))
- , m_orientationSensor(new OrientationSensor(this))
, m_maxScale(1.0)
{
- connect(this, &Screens::changed, this,
- [this] {
- int internalIndex = -1;
- for (int i = 0; i < m_count; i++) {
- if (isInternal(i)) {
- internalIndex = i;
- break;
- }
- }
- m_orientationSensor->setEnabled(internalIndex != -1 && supportsTransformations(internalIndex));
- }
- );
}
Screens::~Screens()
@@ -241,9 +227,6 @@ Qt::ScreenOrientation Screens::orientation(int screen) const
void Screens::setConfig(KSharedConfig::Ptr config)
{
m_config = config;
- if (m_orientationSensor) {
- m_orientationSensor->setConfig(config);
- }
}
} // namespace
diff --git a/screens.h b/screens.h
index 13c1414e21..33d7750c34 100644
--- a/screens.h
+++ b/screens.h
@@ -35,7 +35,6 @@ namespace KWin
{
class AbstractClient;
class Platform;
-class OrientationSensor;
class KWIN_EXPORT Screens : public QObject
{
@@ -147,16 +146,6 @@ public:
virtual Qt::ScreenOrientation orientation(int screen) const;
- /**
- * Provides access to the OrientationSensor. The OrientationSensor is controlled by the
- * base implementation. The implementing subclass can use this to get notifications about
- * changes of the orientation and current orientation. There is no need to enable/disable it,
- * that is done by the base implementation
- */
- OrientationSensor *orientationSensor() const {
- return m_orientationSensor;
- }
-
public Q_SLOTS:
void reconfigure();
@@ -208,7 +197,6 @@ private:
QTimer *m_changedTimer;
KSharedConfig::Ptr m_config;
QSize m_boundingSize;
- OrientationSensor *m_orientationSensor;
qreal m_maxScale;
KWIN_SINGLETON(Screens)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 1304e40b00..58466f6d98 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -38,10 +38,3 @@ add_executable(cursorhotspottest cursorhotspottest.cpp)
target_link_libraries(cursorhotspottest Qt5::Widgets)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
-set(orientationtest_SRCS
- ../orientation_sensor.cpp
- orientationtest.cpp
-)
-qt5_add_dbus_adaptor(orientationtest_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/../org.kde.kwin.OrientationSensor.xml ${CMAKE_CURRENT_SOURCE_DIR}/../orientation_sensor.h KWin::OrientationSensor)
-add_executable(orientationtest ${orientationtest_SRCS})
-target_link_libraries(orientationtest Qt5::DBus Qt5::Widgets Qt5::Sensors KF5::ConfigCore KF5::Notifications KF5::I18n)
diff --git a/tests/orientationtest.cpp b/tests/orientationtest.cpp
deleted file mode 100644
index 722043c474..0000000000
--- a/tests/orientationtest.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/********************************************************************
- KWin - the KDE window manager
- This file is part of the KDE project.
-
-Copyright (C) 2017 Martin Flöser
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*********************************************************************/
-#include "../orientation_sensor.h"
-#include
-#include
-
-using KWin::OrientationSensor;
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
-
- OrientationSensor sensor;
- QObject::connect(&sensor, &OrientationSensor::orientationChanged,
- [&sensor] {
- const auto orientation = sensor.orientation();
- switch (orientation) {
- case OrientationSensor::Orientation::Undefined:
- qDebug() << "Undefined";
- break;
- case OrientationSensor::Orientation::TopUp:
- qDebug() << "TopUp";
- break;
- case OrientationSensor::Orientation::TopDown:
- qDebug() << "TopDown";
- break;
- case OrientationSensor::Orientation::LeftUp:
- qDebug() << "LeftUp";
- break;
- case OrientationSensor::Orientation::RightUp:
- qDebug() << "RightUp";
- break;
- case OrientationSensor::Orientation::FaceUp:
- qDebug() << "FaceUp";
- break;
- case OrientationSensor::Orientation::FaceDown:
- qDebug() << "FaceDown";
- break;
- }
- }
- );
- sensor.setEnabled(true);
-
- return app.exec();
-}