On Fri 26. Aug 13:07:13, Stefan Seyfried wrote:
> Hi,
>
> i noticed, that wile discharging the battery, i get a battery event
> about every minute, but the battery is polled anyway:
>
> time event
> 00:00 polling battery, 100%
> 00:30 ACPI battery event: 99%
> 01:00 polling battery, 99% "battery should not be polled that often"
> 01:30 ACPI battery event: 98%
> 02:00 polling battery, 98% "battery should not be polled that often"
> ..
> you get it. We should not poll, if we had an event before or better: on
> every battery polling, we should reset the timeout, regardless if we
> polled because of a timeout or because of an event.
That's ok.
>
> This (compile-tested, not runtime) patch could fix this:
>
> Index: daemon/acpi.cpp
> ===================================================================
> RCS file: /cvsroot/powersave/powersave/daemon/acpi.cpp,v
> retrieving revision 1.40
> diff -u -p -r1.40 acpi.cpp
> --- daemon/acpi.cpp 25 Aug 2005 13:07:30 -0000 1.40
> +++ daemon/acpi.cpp 26 Aug 2005 11:01:00 -0000
> @@ -218,6 +218,7 @@ int ACPI_Interface::handleHWEventRequest
>
> checkACStateChanges();
> checkBatteryStateChanges();
> + PM_Interface::msecs_last_battery_read = 0;
> // WTF is this good for? -> This is to avoid polling of
> battery
> // set /proc/acpi/battery/*/alarm and wait for events in
> /proc/acpi/event
>
> Index: daemon/powersaved.h
> ===================================================================
> RCS file: /cvsroot/powersave/powersave/daemon/powersaved.h,v
> retrieving revision 1.41
> diff -u -p -r1.41 powersaved.h
> --- daemon/powersaved.h 21 Aug 2005 19:41:08 -0000 1.41
> +++ daemon/powersaved.h 26 Aug 2005 11:01:00 -0000
> @@ -117,7 +117,7 @@ class PM_Interface{
> unsigned long msecs_cpu_idle;
>
> // sum up time battery/temperature was not polled
> - unsigned msecs_last_battery_read;
> +// unsigned msecs_last_battery_read;
> unsigned msecs_last_temperature_read;
>
> /* this is to remember pid of daemon for children
> @@ -149,6 +149,7 @@ class PM_Interface{
> DBUS_ERROR handleActionMessage( DBusMessage *msg );
>
> protected:
> + unsigned msecs_last_battery_read;
> int cooling_mode_supported;
> int throttling_supported;
> int thermal_trip_points_supported;
>
>
> I am not sure about the protected/private header stuff, and if it is
> enough or if i'd better create an "void touch_battery()"-Function in
> class PM_Interface which resets the polling timestamp instead of messing
> around with the timestamp directly.
>
> Please comment, this is not very important, but annoying for me ;-)
Having functions in instead of accessing member variables directly is
always better or some sort of good coding style when programming c++
applications. But that's somehow my own opinion. So doing it the way
above is also no real problem. Protected/ private stuff is ok this
way.
So apply it and I will test it.
Greetings,
Holger
_______________________________________________
powersave-devel mailing list
[email protected]
http://forge.novell.com/mailman/listinfo/powersave-devel