-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/106859/
-----------------------------------------------------------

Review request for Solid.


Description
-------

The bug is produced because of the following code:
if (methods.contains(Solid::PowerManagement::SuspendState)) {
    handleButtonEvents.writeEntry< uint >("lidAction", ToRamMode);
} else {
    handleButtonEvents.writeEntry< uint >("lidAction", TurnOffScreenMode);
}

There, SuspendState will NOT be contained in method, so we will fallback to 
TurnOffScreenMode.

LibSolid is always returning an empty "methods" (QList of SuspendMethods). 
LibSolid uses powerdevil
dbus api to know which suspend methods are available:

libsolid---dbus--->powerdevl-----backend---->UDisk

The problem is that the DBus interface of powerdevil is being setup AFTER 
generateProfile is executed, so libsolid
will fail to query powerdevil for the available suspend methods because 
powerdevil haven't made them public yet.

The approach in the fix:
There are many ways of fixing this, the simpler one is to execute the dbus 
registering before generateProfiles is executed,
the others are based on the same principle of moving the current code around to 
make libsolid work.

The reason why I went for a different approach is because it is architecturally 
wrong to have an interdependence:

PowerDevil------->libsolid------->PowerDevil.

No matter how careful we are, having this interdependence is going to cause 
problems sooner or later.

So, what I have done to keep the patch small is add 2 new arguments to 
generateProfiles (toRam and toDisk) so we don't
have to call libsolid in order to get this info.
I had to add these arguments instead of using PowerDevil::BackendInfo because 
generateProfiles is also used in EditPage.


Diffs
-----

  powerdevil/daemon/powerdevilcore.cpp b968d21 
  powerdevil/daemon/powerdevilprofilegenerator.h a909294 
  powerdevil/daemon/powerdevilprofilegenerator.cpp 060fc30 
  powerdevil/kcmodule/profiles/EditPage.cpp 95a98d9 

Diff: http://git.reviewboard.kde.org/r/106859/diff/


Testing
-------


Thanks,

Alex Fiestas

_______________________________________________
Kde-hardware-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-hardware-devel

Reply via email to