Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Feb 2022 14:46:07 GMT
From:      "Jason W. Bacon" <jwb@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: f7972afbeec5 - main - x11/lumina-core: Replace apm battery monitoring with sysctls()
Message-ID:  <202202231446.21NEk77J046064@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jwb:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f7972afbeec54358e5f80c54baf473b5add0ac92

commit f7972afbeec54358e5f80c54baf473b5add0ac92
Author:     Jason W. Bacon <jwb@FreeBSD.org>
AuthorDate: 2022-02-23 14:43:06 +0000
Commit:     Jason W. Bacon <jwb@FreeBSD.org>
CommitDate: 2022-02-23 14:46:06 +0000

    x11/lumina-core: Replace apm battery monitoring with sysctls()
    
    The apm command does not exist on arm, powerpc, or riscv.
    This also reduces CPU time for lumina-desktop.
    Patches have been proposed to upstream.
    
    PR:             262018
    Approved by:    lbartoletti
---
 x11/lumina-core/Makefile                           |  2 +-
 .../files/patch-libLumina_LuminaOS-FreeBSD.cpp     | 72 ++++++++++++++++++++++
 2 files changed, 73 insertions(+), 1 deletion(-)

diff --git a/x11/lumina-core/Makefile b/x11/lumina-core/Makefile
index 561f15426077..ad734e3c8e94 100644
--- a/x11/lumina-core/Makefile
+++ b/x11/lumina-core/Makefile
@@ -3,7 +3,7 @@
 PORTNAME=	lumina-core
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.6.2
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	x11
 
 MAINTAINER=	lbartoletti@FreeBSD.org
diff --git a/x11/lumina-core/files/patch-libLumina_LuminaOS-FreeBSD.cpp b/x11/lumina-core/files/patch-libLumina_LuminaOS-FreeBSD.cpp
new file mode 100644
index 000000000000..9b27e4817de2
--- /dev/null
+++ b/x11/lumina-core/files/patch-libLumina_LuminaOS-FreeBSD.cpp
@@ -0,0 +1,72 @@
+--- libLumina/LuminaOS-FreeBSD.cpp.orig	2021-12-26 02:33:45 UTC
++++ libLumina/LuminaOS-FreeBSD.cpp
+@@ -9,6 +9,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/sysctl.h>
++#include <dev/acpica/acpiio.h>
+ 
+ #include <QDebug>
+ //can't read xbrightness settings - assume invalid until set
+@@ -289,31 +290,53 @@ void LOS::systemSuspend(){
+ }
+ 
+ //Battery Availability
++// apm command is not available on powerpc or arm
+ bool LOS::hasBattery(){
+   static int hasbat = -1;
++  int        life;
++  size_t     len = sizeof(life);
+   if(hasbat < 0 ){
+-    int val = batteryCharge();
+-    if(val >= 0 && val <= 100){ hasbat = 1; }
+-    else{ hasbat = 0; }
++    if ( sysctlbyname("hw.acpi.battery.life", &life, &len, NULL, 0) == 0 )
++      hasbat = 1;
++    else
++      hasbat = 0;
+   }
+   return (hasbat==1);
+ }
+ 
+ //Battery Charge Level
++// apm command is not available on powerpc or arm
+ int LOS::batteryCharge(){ //Returns: percent charge (0-100), anything outside that range is counted as an error
+-  int charge = LUtils::getCmdOutput("apm -l").join("").toInt();
+-  if(charge > 100){ charge = -1; } //invalid charge
+-  return charge;
++  int    life;	// sysctl name
++  size_t len = sizeof(life);
++  if ( (sysctlbyname("hw.acpi.battery.life", &life, &len, NULL, 0) != 0) ||
++       (life > 100) )
++     life = -1; //invalid charge
++  return life;
+ }
+ 
+ //Battery Charging State
++// apm command is not available on powerpc or arm
+ bool LOS::batteryIsCharging(){
+-  return (LUtils::getCmdOutput("apm -a").join("").simplified() == "1");
++  int	 state;
++  size_t len = sizeof(state);
++  if ( (sysctlbyname("hw.acpi.battery.state", &state, &len, NULL, 0) == 0) &&
++       (state == ACPI_BATT_STAT_CHARGING) )
++    return true;
++  else
++    return false;
+ }
+ 
+ //Battery Time Remaining
++// apm command is not available on powerpc or arm
+ int LOS::batterySecondsLeft(){ //Returns: estimated number of seconds remaining
+-  return LUtils::getCmdOutput("apm -t").join("").toInt();
++  int	 min;
++  size_t len = sizeof(min);
++  if ( LOS::batteryIsCharging() ||
++       (sysctlbyname("hw.acpi.battery.time", &min, &len, NULL, 0) != 0) )
++    return -1;
++  else
++    return min * 60;
+ }
+ 
+ //File Checksums



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202202231446.21NEk77J046064>