diff options
Diffstat (limited to 'src/hardware.cpp')
-rw-r--r-- | src/hardware.cpp | 269 |
1 files changed, 17 insertions, 252 deletions
diff --git a/src/hardware.cpp b/src/hardware.cpp index e3b811a..cb4e98c 100644 --- a/src/hardware.cpp +++ b/src/hardware.cpp @@ -37,7 +37,6 @@ // include own header #include "hardware.h" #include "tdepowersave_debug.h" -#include "privileges.h" // #define USE_EVENT_DEVICES_DIRECTLY 1 @@ -51,7 +50,6 @@ HardwareInfo::HardwareInfo() { laptop = false; brightness = false; brightness_in_hardware = false; - schedPowerSavings = false; sessionIsActive = true; // assume as first we are active // initialize connection to the TDE hardware library @@ -79,20 +77,15 @@ HardwareInfo::HardwareInfo() { primaryBatteries = new BatteryCollection(BAT_PRIMARY); setPrimaryBatteriesWarningLevel(); // force default settings - // connect to D-Bus and HAL - dbus_HAL = new dbusInterface(); - if (dbus_HAL->isConnectedToDBUS()) { - dbus_terminated = false; - } else { - kdError() << "Could not connect to D-Bus & HAL" << endl; - } + // connect to D-Bus + dbus_iface = new dbusInterface(); + sessionIsActive = dbus_iface->checkActiveSession(); + connect(dbus_iface, TQT_SIGNAL(activeSessionChanged(bool)), this, TQT_SLOT(handleSessionState(bool))); - checkConsoleKitSession(); checkPowermanagement(); checkIsLaptop(); checkBrightness(); checkCPUFreq(); - // getSchedPowerSavings(); checkSuspend(); intialiseHWInfo(); @@ -141,15 +134,26 @@ bool HardwareInfo::reinitHardwareInfos () { checkCPUFreq(); checkSuspend(); intialiseHWInfo(); - // getSchedPowerSavings(); updatePrimaryBatteries(); kdDebugFuncOut(trace); return true; } + /*! - * This funtion is used to parse changed hardware nofifications from the TDE hardware library + * \b TQT_SLOT called if the state of the current session change + * \param state boolean represent the state of the session + */ +void HardwareInfo::handleSessionState( bool state ) { + if( state != sessionIsActive ) { + sessionIsActive = state; + TQTimer::singleShot(50, this, TQT_SLOT(emitSessionActiveState())); + } +} + +/*! + * This function is used to parse changed hardware nofifications from the TDE hardware library * \param device a \ref TDEGenericDevice* which should be processed */ void HardwareInfo::processHardwareChangedEvent (TDEGenericDevice* device) { @@ -216,99 +220,6 @@ void HardwareInfo::processKeyPressEvent(unsigned int keycode, TDEEventDevice* ed } /*! - * This funtion is used to parse a message from D-Bus for the different - * messagetypes and events. - * \param type a \ref msg_type which should be parse/processed - * \param message the message - * \param value an optional message value as e.g. message string - */ -void HardwareInfo::processMessage (msg_type type, TQString message, TQString value) { - kdDebugFuncIn(trace); - - switch(type) { - case ACPI_EVENT: - // we don't handle acpi events here atm - break; - case HAL_DEVICE: - // --> we can maybe ignore these events except for batteries, not shure atm - int _type; - - if (message.startsWith("DeviceAdded")) { - if (checkIfHandleDevice(value, &_type)) { - switch (_type) { - case BATTERY: - case AC_ADAPTER: - case BUTTON_SLEEP: - case BUTTON_POWER: - case LID: - // TODO: handle code if needed actually not - break; - case LAPTOP_PANEL: - checkBrightness(); - break; - default: - kdDebug() << "New device added Device udi: " - << value << "type: " << _type << endl; - break; - } - } - } else if (message.startsWith("DeviceRemoved")) { - if (allUDIs.contains(value)) { - if (checkIfHandleDevice(value, &_type)) { - switch (_type) { - case BATTERY: - case AC_ADAPTER: - case BUTTON_SLEEP: - case BUTTON_POWER: - case LID: - // TODO: handle code if needed - break; - case LAPTOP_PANEL: - checkBrightness(); - break; - default: - kdDebug() << "Couldn't handle unknown device" << endl; - break; - } - } - } else { - kdDebug() << "Not monitored device removed: " << value << endl; - } - } else { - kdDebug() << "Unknown HAL_DEVICE message: " << message << endl; - } - break; - case CONSOLEKIT_SESSION_ACTIVE: - if (!message.isEmpty() && !value.isEmpty()) { - if (message == consoleKitSession) { - if (value == "1") { - sessionIsActive = true; - } else { - sessionIsActive = false; - } - TQTimer::singleShot(50, this, TQT_SLOT(emitSessionActiveState())); - } else { - if (trace) - kdDebug() << "CONSOLEKIT_SESSION_ACTIVE: not our session" << endl; - } - } - break; - case POLICY_POWER_OWNER_CHANGED: - if (message.startsWith("NOW_OWNER")) { - // TODO: add code - } else if (message.startsWith("OTHER_OWNER")){ - // TODO: add code - } - break; - default: - kdDebug() << "Recieved unknown package type: " << type << endl; - break; - } - - kdDebugFuncOut(trace); -} - -/*! * This TQT_SLOT is used to fetch the resume signal and multiplex. If needed some * actions after resume, do this here. * \param result integer with the result of the resume/suspend @@ -331,61 +242,6 @@ void HardwareInfo::handleResumeSignal (int result) { } /*! - * This function checks the session for the running TDEPowersave instance - * \return Boolean with result of operation - * \retval true if the query/check could get finished - * \retval false on every error - */ -bool HardwareInfo::checkConsoleKitSession () { - kdDebugFuncIn(trace); - - bool retval = false; - - if (dbus_HAL->isConnectedToDBUS()) { - char *reply; - char *cookie = getenv("XDG_SESSION_COOKIE"); - - if (cookie == NULL) { - kdDebug() << "Could not get XDG_SESSION_COOKIE from environment" << endl; - sessionIsActive = true; - } else { - if (dbus_HAL->dbusSystemMethodCall( CK_SERVICE, CK_MANAGER_OBJECT, - CK_MANAGER_IFACE, "GetSessionForCookie", - &reply, DBUS_TYPE_OBJECT_PATH, - DBUS_TYPE_STRING, &cookie, - DBUS_TYPE_INVALID)) { - if (trace) - kdDebug() << "GetSessionForCookie returned: " << reply << endl; - - if (reply != NULL) { - dbus_bool_t i_reply; - consoleKitSession = reply; - - if (dbus_HAL->dbusSystemMethodCall( CK_SERVICE, consoleKitSession, - CK_SESSION_IFACE, "IsActive", - &i_reply, DBUS_TYPE_BOOLEAN, - DBUS_TYPE_INVALID)) { - sessionIsActive = ((i_reply != 0) ? true: false); - if (trace) - kdDebug() << "IsActive returned: " << sessionIsActive << endl; - - retval = true; - } else { - kdError() << "Could get session cookie and session name, but not " - << "but not the status of the session. Assume for now " - << "the Session is inactive!" << endl; - sessionIsActive = false; - } - } - } - } - } - - kdDebugFuncOut(trace); - return retval; -} - -/*! * This function check for a given UDI, if we should handle a device * \param _udi TQString with the UDI of the device * \param *type pointer to a integer to return the type of the device, see \ref device_type @@ -1090,7 +946,6 @@ bool HardwareInfo::setCPUFreq ( cpufreq_type cpufreq, int limit ) { TDEGenericHardwareList hwlist = m_hwdevices->listByDeviceClass(TDEGenericDeviceType::CPU); if (hwlist.count() > 0) { - dbus_bool_t consider = (dbus_bool_t) getAcAdapter(); TQStringList dynamic; if (checkCurrentCPUFreqPolicy() == cpufreq) { @@ -1122,20 +977,6 @@ bool HardwareInfo::setCPUFreq ( cpufreq_type cpufreq, int limit ) { } } -#if 0 - // FIXME - // What does "SetCPUFreqConsiderNice" actually do??!?! - - // correct set ondemand - if (!dbus_HAL->dbusSystemMethodCall( HAL_SERVICE, HAL_COMPUTER_UDI, - HAL_CPUFREQ_IFACE, - "SetCPUFreqConsiderNice", - DBUS_TYPE_BOOLEAN, &consider, - DBUS_TYPE_INVALID)) { - kdError() << "Couldn't set SetCPUFreqConsiderNice for DYNAMIC" << endl; - } - -#endif // Set performance limits on all CPUs TDEGenericDevice *hwdevice; TDECPUDevice *cpudevice; @@ -1185,7 +1026,6 @@ bool HardwareInfo::setCPUFreq ( cpufreq_type cpufreq, int limit ) { bool HardwareInfo::setCPUFreqGovernor( const char *governor ) { kdDebugFuncIn(trace); - int reply; bool ret = true; TDEGenericHardwareList hwlist = m_hwdevices->listByDeviceClass(TDEGenericDeviceType::CPU); @@ -1205,61 +1045,6 @@ bool HardwareInfo::setCPUFreqGovernor( const char *governor ) { } -/*! - * Function to set the powersave mode (incl. e.g. disk settings) via TDE hardware library. - * \param on boolean which tell if enable/disable powersave mode - * \return boolean with result of the operation - * \retval true if successful - * \retval false else, if a error occurs - */ -bool HardwareInfo::setPowerSave( bool on ) { - kdDebugFuncIn(trace); - - bool retval = false; - - // FIXME - // Set up power saving to the best of our ability using "raw" functions - printf("[FIXME] HardwareInfo::setPowerSave unimplemented!\n"); fflush(stdout); - - kdDebugFuncOut(trace); - return retval; -} - -/*! - * Function to call GetSchedPowerSavings() via TDE hardware library. - * \return boolean with result of the operation - * \retval true if successful - * \retval false else, if a error occurs - */ -bool HardwareInfo::getSchedPowerSavings() { - kdDebugFuncIn(trace); - - bool returnval = false; - - // What does the HAL method GetSchedPowerSavings actually do?!?!? - - kdDebugFuncOut(trace); - return returnval; -} - -/*! - * Function to call SetSchedPowerSavings() via TDE hardware library. - * Note: this would only work on multiprocessor/-core machines. - * \return boolean with result of the operation - * \retval true if successful - * \retval false else, if a error occurs - */ -bool HardwareInfo::setSchedPowerSavings( bool enable ) { - kdDebugFuncIn(trace); - - bool retval = false; - - // What does the HAL method SetCPUFreqPerformance actually do?!?!? - - kdDebugFuncOut(trace); - return retval; -} - // --> TDE hardware library method call (trigger actions) section -- END <--- @@ -1304,16 +1089,6 @@ void HardwareInfo::emitS2diskButtonPressed() { * Function to emit the signal about changes in the session state */ void HardwareInfo::emitSessionActiveState() { - if (sessionIsActive) { - if (!dbus_HAL->acquiredPolicyPowerInterface()) { - dbus_HAL->acquirePolicyPowerIface(); - } - } else { - if (dbus_HAL->acquiredPolicyPowerInterface()) { - dbus_HAL->releasePolicyPowerIface(); - } - } - emit desktopSessionIsActive(sessionIsActive); } @@ -1635,16 +1410,6 @@ int HardwareInfo::isCpuFreqAllowed () { return cpuFreqAllowed; } -/*! check if the org.freedesktop.Policy.Power interface has an owner - * \return boolean with info if org.freedesktop.Policy.Power interface has an owner or not - * \retval true if there is a owner - * \retval false else - */ -bool HardwareInfo::isPolicyPowerIfaceOwned () { - return dbus_HAL->isPolicyPowerIfaceOwned(); -} - - // --> get private members section -- END <--- #include "hardware.moc" |