diff options
author | marcus <marcus@FreeBSD.org> | 2005-05-11 23:20:58 +0800 |
---|---|---|
committer | marcus <marcus@FreeBSD.org> | 2005-05-11 23:20:58 +0800 |
commit | 15a9e79305b7cbd15ec6b2740845785655445fe2 (patch) | |
tree | 6af8a6aea3cdd9e1342a0f992f6aef9425eabd8f | |
parent | a494e2bf76e091fe3e53811a4caa3e6ef2bc051c (diff) | |
download | freebsd-ports-gnome-15a9e79305b7cbd15ec6b2740845785655445fe2.tar.gz freebsd-ports-gnome-15a9e79305b7cbd15ec6b2740845785655445fe2.tar.zst freebsd-ports-gnome-15a9e79305b7cbd15ec6b2740845785655445fe2.zip |
Don't read ACPI info twice. This can cause battstat to take up more CPU
than it needs to.
Submitted by: Ryan Lortie <desrt@desrt.ca>
-rw-r--r-- | x11/gnome-applets/Makefile | 1 | ||||
-rw-r--r-- | x11/gnome-applets/files/patch-battstat-acpi | 218 | ||||
-rw-r--r-- | x11/gnomeapplets2/Makefile | 1 | ||||
-rw-r--r-- | x11/gnomeapplets2/files/patch-battstat-acpi | 218 |
4 files changed, 214 insertions, 224 deletions
diff --git a/x11/gnome-applets/Makefile b/x11/gnome-applets/Makefile index 2a395cbf80d9..c763c40dd6da 100644 --- a/x11/gnome-applets/Makefile +++ b/x11/gnome-applets/Makefile @@ -7,6 +7,7 @@ PORTNAME= gnomeapplets2 PORTVERSION= 2.10.1 +PORTREVISION= 1 CATEGORIES= x11 gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/gnome-applets/2.10 diff --git a/x11/gnome-applets/files/patch-battstat-acpi b/x11/gnome-applets/files/patch-battstat-acpi index f34bd3cadc16..621ca6b14880 100644 --- a/x11/gnome-applets/files/patch-battstat-acpi +++ b/x11/gnome-applets/files/patch-battstat-acpi @@ -116,118 +116,6 @@ NULL }; ---- battstat/power-management.c.orig Thu Jan 13 23:06:40 2005 -+++ battstat/power-management.c Mon Mar 14 19:53:13 2005 -@@ -73,9 +73,18 @@ - * the problem might be. This error message is not to be freed. - */ - --#ifdef __FreeBSD__ -- -+#if defined(__FreeBSD__) -+#if defined(__i386__) - #include <machine/apm_bios.h> -+#endif -+#include "acpi-freebsd.h" -+ -+struct acpi_info acpiinfo; -+gboolean using_acpi; -+int acpi_count; -+struct apm_info apminfo; -+ -+gboolean acpi_freebsd_read(struct apm_info *apminfo, struct acpi_info *acpiinfo); - - #define APMDEVICE "/dev/apm" - -@@ -86,32 +95,51 @@ - FreeBSD. Each time this functions is called (once every second) - the APM device is opened, read from and then closed. - */ -- struct apm_info apminfo; - int fd; - - if (DEBUG) g_print("apm_readinfo() (FreeBSD)\n"); - -- fd = open(APMDEVICE, O_RDONLY); -- if (fd == -1) -- { -- pm_initialised = 0; -- return ERR_OPEN_APMDEV; -+ if (using_acpi) { -+ fd = -1; -+ if (acpi_count <= 0) { -+ acpi_count = 30; -+ acpi_freebsd_read(&apminfo, &acpiinfo); -+ } -+ acpi_count--; - } -+ else { -+#if defined(__i386__) -+ fd = open(APMDEVICE, O_RDONLY); -+ if (fd == -1) { -+ return ERR_OPEN_APMDEV; -+ } - -- if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) -- err(1, "ioctl(APMIO_GETINFO)"); -+ if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) -+ err(1, "ioctl(APMIO_GETINFO)"); - -- close(fd); -+ close(fd); -+ -+ if(apminfo.ai_status == 0) -+ return ERR_APM_E; -+#else -+ return ERR_OPEN_APMDEV; -+#endif -+ } - -- if(apminfo.ai_status == 0) -- return ERR_APM_E; -+ if (using_acpi) { -+ acpi_process_event(&acpiinfo); -+ acpi_freebsd_read(&apminfo, &acpiinfo); -+ } - - status->present = TRUE; - status->on_ac_power = apminfo.ai_acline ? 1 : 0; - status->state = apminfo.ai_batt_stat; - status->percent = apminfo.ai_batt_life; - status->charging = (status->state == 3) ? TRUE : FALSE; -- status->minutes = apminfo.ai_batt_time; -+ if (using_acpi) -+ status->minutes = apminfo.ai_batt_time; -+ else -+ status->minutes = (int) (apminfo.ai_batt_time/60.0); - - return NULL; - } -@@ -339,6 +367,13 @@ - G_IO_IN | G_IO_ERR | G_IO_HUP, - acpi_callback, NULL); - } -+#elif defined(__FreeBSD__) -+ if (acpi_freebsd_init(&acpiinfo)) { -+ using_acpi = TRUE; -+ acpi_count = 0; -+ } -+ else -+ using_acpi = FALSE; - #endif - pm_initialised = 1; - -@@ -360,6 +395,10 @@ - g_source_remove(acpiwatch); - acpiwatch = 0; - acpi_linux_cleanup(&acpiinfo); -+ } -+#elif defined(__FreeBSD__) -+ if (using_acpi) { -+ acpi_freebsd_cleanup(&acpiinfo); - } - #endif - --- battstat/properties.c.orig Fri Jan 14 23:38:18 2005 +++ battstat/properties.c Mon Mar 14 19:49:26 2005 @@ -27,7 +27,7 @@ @@ -460,3 +348,109 @@ + return TRUE; +} +#endif +--- power-management.c.orig Sun Mar 20 05:20:55 2005 ++++ power-management.c Wed May 11 10:22:17 2005 +@@ -73,9 +73,18 @@ static int pm_initialised; + * the problem might be. This error message is not to be freed. + */ + +-#ifdef __FreeBSD__ +- ++#if defined(__FreeBSD__) ++#if defined(__i386__) + #include <machine/apm_bios.h> ++#endif ++#include "acpi-freebsd.h" ++ ++struct acpi_info acpiinfo; ++gboolean using_acpi; ++int acpi_count; ++struct apm_info apminfo; ++ ++gboolean acpi_freebsd_read(struct apm_info *apminfo, struct acpi_info *acpiinfo); + + #define APMDEVICE "/dev/apm" + +@@ -86,32 +95,45 @@ apm_readinfo (BatteryStatus *status) + FreeBSD. Each time this functions is called (once every second) + the APM device is opened, read from and then closed. + */ +- struct apm_info apminfo; + int fd; + + if (DEBUG) g_print("apm_readinfo() (FreeBSD)\n"); + +- fd = open(APMDEVICE, O_RDONLY); +- if (fd == -1) +- { +- pm_initialised = 0; +- return ERR_OPEN_APMDEV; ++ if (using_acpi) { ++ if (acpi_count <= 0) { ++ acpi_count = 30; ++ acpi_freebsd_read(&apminfo, &acpiinfo); ++ } ++ acpi_count--; + } ++ else { ++#if defined(__i386__) ++ fd = open(APMDEVICE, O_RDONLY); ++ if (fd == -1) { ++ return ERR_OPEN_APMDEV; ++ } + +- if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) +- err(1, "ioctl(APMIO_GETINFO)"); ++ if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) ++ err(1, "ioctl(APMIO_GETINFO)"); + +- close(fd); ++ close(fd); + +- if(apminfo.ai_status == 0) +- return ERR_APM_E; ++ if(apminfo.ai_status == 0) ++ return ERR_APM_E; ++#else ++ return ERR_OPEN_APMDEV; ++#endif ++ } + + status->present = TRUE; + status->on_ac_power = apminfo.ai_acline ? 1 : 0; + status->state = apminfo.ai_batt_stat; + status->percent = apminfo.ai_batt_life; + status->charging = (status->state == 3) ? TRUE : FALSE; +- status->minutes = apminfo.ai_batt_time; ++ if (using_acpi) ++ status->minutes = apminfo.ai_batt_time; ++ else ++ status->minutes = (int) (apminfo.ai_batt_time/60.0); + + return NULL; + } +@@ -339,6 +361,13 @@ power_management_initialise( void ) + G_IO_IN | G_IO_ERR | G_IO_HUP, + acpi_callback, NULL); + } ++#elif defined(__FreeBSD__) ++ if (acpi_freebsd_init(&acpiinfo)) { ++ using_acpi = TRUE; ++ acpi_count = 0; ++ } ++ else ++ using_acpi = FALSE; + #endif + pm_initialised = 1; + +@@ -360,6 +389,10 @@ power_management_cleanup( void ) + g_source_remove(acpiwatch); + acpiwatch = 0; + acpi_linux_cleanup(&acpiinfo); ++ } ++#elif defined(__FreeBSD__) ++ if (using_acpi) { ++ acpi_freebsd_cleanup(&acpiinfo); + } + #endif + diff --git a/x11/gnomeapplets2/Makefile b/x11/gnomeapplets2/Makefile index 2a395cbf80d9..c763c40dd6da 100644 --- a/x11/gnomeapplets2/Makefile +++ b/x11/gnomeapplets2/Makefile @@ -7,6 +7,7 @@ PORTNAME= gnomeapplets2 PORTVERSION= 2.10.1 +PORTREVISION= 1 CATEGORIES= x11 gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= sources/gnome-applets/2.10 diff --git a/x11/gnomeapplets2/files/patch-battstat-acpi b/x11/gnomeapplets2/files/patch-battstat-acpi index f34bd3cadc16..621ca6b14880 100644 --- a/x11/gnomeapplets2/files/patch-battstat-acpi +++ b/x11/gnomeapplets2/files/patch-battstat-acpi @@ -116,118 +116,6 @@ NULL }; ---- battstat/power-management.c.orig Thu Jan 13 23:06:40 2005 -+++ battstat/power-management.c Mon Mar 14 19:53:13 2005 -@@ -73,9 +73,18 @@ - * the problem might be. This error message is not to be freed. - */ - --#ifdef __FreeBSD__ -- -+#if defined(__FreeBSD__) -+#if defined(__i386__) - #include <machine/apm_bios.h> -+#endif -+#include "acpi-freebsd.h" -+ -+struct acpi_info acpiinfo; -+gboolean using_acpi; -+int acpi_count; -+struct apm_info apminfo; -+ -+gboolean acpi_freebsd_read(struct apm_info *apminfo, struct acpi_info *acpiinfo); - - #define APMDEVICE "/dev/apm" - -@@ -86,32 +95,51 @@ - FreeBSD. Each time this functions is called (once every second) - the APM device is opened, read from and then closed. - */ -- struct apm_info apminfo; - int fd; - - if (DEBUG) g_print("apm_readinfo() (FreeBSD)\n"); - -- fd = open(APMDEVICE, O_RDONLY); -- if (fd == -1) -- { -- pm_initialised = 0; -- return ERR_OPEN_APMDEV; -+ if (using_acpi) { -+ fd = -1; -+ if (acpi_count <= 0) { -+ acpi_count = 30; -+ acpi_freebsd_read(&apminfo, &acpiinfo); -+ } -+ acpi_count--; - } -+ else { -+#if defined(__i386__) -+ fd = open(APMDEVICE, O_RDONLY); -+ if (fd == -1) { -+ return ERR_OPEN_APMDEV; -+ } - -- if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) -- err(1, "ioctl(APMIO_GETINFO)"); -+ if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) -+ err(1, "ioctl(APMIO_GETINFO)"); - -- close(fd); -+ close(fd); -+ -+ if(apminfo.ai_status == 0) -+ return ERR_APM_E; -+#else -+ return ERR_OPEN_APMDEV; -+#endif -+ } - -- if(apminfo.ai_status == 0) -- return ERR_APM_E; -+ if (using_acpi) { -+ acpi_process_event(&acpiinfo); -+ acpi_freebsd_read(&apminfo, &acpiinfo); -+ } - - status->present = TRUE; - status->on_ac_power = apminfo.ai_acline ? 1 : 0; - status->state = apminfo.ai_batt_stat; - status->percent = apminfo.ai_batt_life; - status->charging = (status->state == 3) ? TRUE : FALSE; -- status->minutes = apminfo.ai_batt_time; -+ if (using_acpi) -+ status->minutes = apminfo.ai_batt_time; -+ else -+ status->minutes = (int) (apminfo.ai_batt_time/60.0); - - return NULL; - } -@@ -339,6 +367,13 @@ - G_IO_IN | G_IO_ERR | G_IO_HUP, - acpi_callback, NULL); - } -+#elif defined(__FreeBSD__) -+ if (acpi_freebsd_init(&acpiinfo)) { -+ using_acpi = TRUE; -+ acpi_count = 0; -+ } -+ else -+ using_acpi = FALSE; - #endif - pm_initialised = 1; - -@@ -360,6 +395,10 @@ - g_source_remove(acpiwatch); - acpiwatch = 0; - acpi_linux_cleanup(&acpiinfo); -+ } -+#elif defined(__FreeBSD__) -+ if (using_acpi) { -+ acpi_freebsd_cleanup(&acpiinfo); - } - #endif - --- battstat/properties.c.orig Fri Jan 14 23:38:18 2005 +++ battstat/properties.c Mon Mar 14 19:49:26 2005 @@ -27,7 +27,7 @@ @@ -460,3 +348,109 @@ + return TRUE; +} +#endif +--- power-management.c.orig Sun Mar 20 05:20:55 2005 ++++ power-management.c Wed May 11 10:22:17 2005 +@@ -73,9 +73,18 @@ static int pm_initialised; + * the problem might be. This error message is not to be freed. + */ + +-#ifdef __FreeBSD__ +- ++#if defined(__FreeBSD__) ++#if defined(__i386__) + #include <machine/apm_bios.h> ++#endif ++#include "acpi-freebsd.h" ++ ++struct acpi_info acpiinfo; ++gboolean using_acpi; ++int acpi_count; ++struct apm_info apminfo; ++ ++gboolean acpi_freebsd_read(struct apm_info *apminfo, struct acpi_info *acpiinfo); + + #define APMDEVICE "/dev/apm" + +@@ -86,32 +95,45 @@ apm_readinfo (BatteryStatus *status) + FreeBSD. Each time this functions is called (once every second) + the APM device is opened, read from and then closed. + */ +- struct apm_info apminfo; + int fd; + + if (DEBUG) g_print("apm_readinfo() (FreeBSD)\n"); + +- fd = open(APMDEVICE, O_RDONLY); +- if (fd == -1) +- { +- pm_initialised = 0; +- return ERR_OPEN_APMDEV; ++ if (using_acpi) { ++ if (acpi_count <= 0) { ++ acpi_count = 30; ++ acpi_freebsd_read(&apminfo, &acpiinfo); ++ } ++ acpi_count--; + } ++ else { ++#if defined(__i386__) ++ fd = open(APMDEVICE, O_RDONLY); ++ if (fd == -1) { ++ return ERR_OPEN_APMDEV; ++ } + +- if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) +- err(1, "ioctl(APMIO_GETINFO)"); ++ if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1) ++ err(1, "ioctl(APMIO_GETINFO)"); + +- close(fd); ++ close(fd); + +- if(apminfo.ai_status == 0) +- return ERR_APM_E; ++ if(apminfo.ai_status == 0) ++ return ERR_APM_E; ++#else ++ return ERR_OPEN_APMDEV; ++#endif ++ } + + status->present = TRUE; + status->on_ac_power = apminfo.ai_acline ? 1 : 0; + status->state = apminfo.ai_batt_stat; + status->percent = apminfo.ai_batt_life; + status->charging = (status->state == 3) ? TRUE : FALSE; +- status->minutes = apminfo.ai_batt_time; ++ if (using_acpi) ++ status->minutes = apminfo.ai_batt_time; ++ else ++ status->minutes = (int) (apminfo.ai_batt_time/60.0); + + return NULL; + } +@@ -339,6 +361,13 @@ power_management_initialise( void ) + G_IO_IN | G_IO_ERR | G_IO_HUP, + acpi_callback, NULL); + } ++#elif defined(__FreeBSD__) ++ if (acpi_freebsd_init(&acpiinfo)) { ++ using_acpi = TRUE; ++ acpi_count = 0; ++ } ++ else ++ using_acpi = FALSE; + #endif + pm_initialised = 1; + +@@ -360,6 +389,10 @@ power_management_cleanup( void ) + g_source_remove(acpiwatch); + acpiwatch = 0; + acpi_linux_cleanup(&acpiinfo); ++ } ++#elif defined(__FreeBSD__) ++ if (using_acpi) { ++ acpi_freebsd_cleanup(&acpiinfo); + } + #endif + |