Fix nvidia memory frequency reading patch sf.net id #2493134.
authorAlexander Monakov <a_monakov@users.sourceforge.net>
Wed, 18 Feb 2009 05:10:15 +0000 (22:10 -0700)
committerBrenden Matthews <brenden@rty.ca>
Wed, 18 Feb 2009 05:10:15 +0000 (22:10 -0700)
ChangeLog
README
configure.ac.in
doc/conky.1
doc/variables.xml
src/nvidia.c
src/nvidia.h

index 0e9bc03..12e598c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,7 @@
                * fix number printing in human_readable()
                * network $upspeed and $downspeed now use human_readable()
        * Fix diskio_read/write patch sf.net id #2493084 (thanks Alexander)
+       * Fix nvidia memory frequency reading patch sf.net id #2493134
 
 2009-02-15
        * Added out_to_x
diff --git a/README b/README
index c88a01c..8b405ce 100644 (file)
--- a/README
+++ b/README
@@ -1309,13 +1309,14 @@ conky(1)                                                              conky(1)
              Hostname
 
 
-       1mnvidia threshold temp gpufreq memfreq imagequality0m
+       1mnvidia threshold temp ambient gpufreq memfreq imagequality0m
              Nvidia  graficcard support for the XNVCtrl library.  Each option
              can be shortened to the least  significant  part.   Temperatures
              are printed as float, all other values as integer.
 
              1mthreshold22m: the thresholdtemperature at which the gpu slows down
              1mtemp22m: gives the gpu current temperature
+             1mambient22m: gives current air temperature near GPU case
              1mgpufreq22m: gives the current gpu frequency
              1mmemfreq22m: gives the current mem frequency
              1mimagequality22m: which imagequality should be choosen by OpenGL ap‐
index 2855eeb..c771c94 100644 (file)
@@ -312,29 +312,6 @@ if test x$want_wlan = xyes; then
 fi
 
 dnl
-dnl NVIDIA libXNVCtrl support
-dnl
-
-AC_ARG_ENABLE([nvidia],
-               AC_HELP_STRING([--enable-nvidia], [enable if you want nvidia support @<:@default=no@:>@]),
-               [want_nvidia="$enableval"], [want_nvidia=no])
-if test x$want_nvidia = xyes; then
-    if test "x$want_x11" != "xyes"; then
-               # do nada
-               want_nvidia=no
-       else
-               AC_CHECK_HEADERS([NVCtrl/NVCtrl.h], [], AC_MSG_ERROR([NVCtrl/NVCtrl.h header not found]))
-dnl AC_CHECK_LIB([XNVCtrl], [XNVCTRLQueryVersion], [] ,[AC_MSG_ERROR([grrr])] )
-dnl AC_CHECK_LIB([XNVCtrl], [XNVCTRLCheckTargetData], [], [AC_MSG_ERROR([grr])])
-dnl ## am I Stupid ??
-dnl ## it won't find the lib for some reason!?
-               LIBS="$LIBS -lXNVCtrl"
-                       AC_DEFINE(NVIDIA, 1, [Define if you want nvidia support])
-       fi
-fi
-AM_CONDITIONAL(BUILD_NVIDIA, test x$want_nvidia = xyes)
-
-dnl
 dnl IMLIB2
 dnl
 
@@ -497,6 +474,29 @@ if test x$want_xft = "xyes"; then
 fi
 
 dnl
+dnl NVIDIA libXNVCtrl support
+dnl
+
+AC_ARG_ENABLE([nvidia],
+               AC_HELP_STRING([--enable-nvidia], [enable if you want nvidia support @<:@default=no@:>@]),
+               [want_nvidia="$enableval"], [want_nvidia=no])
+if test x$want_nvidia = xyes; then
+    if test "x$want_x11" != "xyes"; then
+               # do nada
+               want_nvidia=no
+       else
+               AC_CHECK_HEADERS([NVCtrl/NVCtrl.h], [], AC_MSG_ERROR([NVCtrl/NVCtrl.h header not found]))
+dnl AC_CHECK_LIB([XNVCtrl], [XNVCTRLQueryVersion], [] ,[AC_MSG_ERROR([grrr])] )
+dnl AC_CHECK_LIB([XNVCtrl], [XNVCTRLCheckTargetData], [], [AC_MSG_ERROR([grr])])
+dnl ## am I Stupid ??
+dnl ## it won't find the lib for some reason!?
+               LIBS="$LIBS -lXNVCtrl"
+                       AC_DEFINE(NVIDIA, 1, [Define if you want nvidia support])
+       fi
+fi
+AM_CONDITIONAL(BUILD_NVIDIA, test x$want_nvidia = xyes)
+
+dnl
 dnl GLIB
 dnl
 
index 7902dc9..1a11026 100644 (file)
@@ -1140,7 +1140,7 @@ not. Both mbox and maildir type mailboxes are supported.
 Hostname
 
 .TP 
-\fB\*(T<\fBnvidia\fR\*(T>\fR \*(T<\fBthreshold\fR\*(T> \*(T<\fBtemp\fR\*(T> \*(T<\fBgpufreq\fR\*(T> \*(T<\fBmemfreq\fR\*(T> \*(T<\fBimagequality\fR\*(T> 
+\fB\*(T<\fBnvidia\fR\*(T>\fR \*(T<\fBthreshold\fR\*(T> \*(T<\fBtemp\fR\*(T> \*(T<\fBambient\fR\*(T> \*(T<\fBgpufreq\fR\*(T> \*(T<\fBmemfreq\fR\*(T> \*(T<\fBimagequality\fR\*(T> 
 Nvidia graficcard support for the XNVCtrl library.
 Each option can be shortened to the least significant part.
 Temperatures are printed as float, all other values as integer.
@@ -1151,6 +1151,9 @@ the thresholdtemperature at which the gpu slows down
 \fBtemp\fR:
 gives the gpu current temperature
 .br
+\fBambient\fR:
+gives current air temperature near GPU case
+.br
 \fBgpufreq\fR:
 gives the current gpu frequency
 .br
index 05a8eeb..43d482a 100644 (file)
                        <command><option>nvidia</option></command>
                        <option>threshold</option>
                        <option>temp</option>
+                       <option>ambient</option>
                        <option>gpufreq</option>
                        <option>memfreq</option>
                        <option>imagequality</option>
                                <member><command>temp</command>:
                                        gives the gpu current temperature
                                </member>
+                               <member><command>ambient</command>:
+                                       gives current air temperature near GPU case
+                               </member>
                                <member><command>gpufreq</command>:
                                        gives the current gpu frequency
                                </member>
index 4926bb6..06a5251 100644 (file)
 
 #include "nvidia.h"
 
+const int nvidia_query_to_attr[] = {NV_CTRL_GPU_CORE_TEMPERATURE,
+                                   NV_CTRL_GPU_CORE_THRESHOLD,
+                                   NV_CTRL_AMBIENT_TEMPERATURE,
+                                   NV_CTRL_GPU_CURRENT_CLOCK_FREQS,
+                                   NV_CTRL_GPU_CURRENT_CLOCK_FREQS,
+                                   NV_CTRL_IMAGE_SETTINGS};
+
 int get_nvidia_value(QUERY_ID qid, Display *dpy){
        int tmp;
-       if(!XNVCTRLQueryAttribute(dpy, 0, 0, qid, &tmp)){
+       if(!XNVCTRLQueryAttribute(dpy, 0, 0, nvidia_query_to_attr[qid], &tmp)){
                return -1;
        }
        /* FIXME: when are the low 2 bytes of NV_GPU_FREQ needed? */
@@ -56,6 +63,10 @@ int set_nvidia_type(struct nvidia_s *nvidia, const char *arg)
                        else
                                return 1;
                        break;
+               case 'a':                              // ambient temp
+                       nvidia->print_as_float = 1;
+                       nvidia->type = NV_TEMP_AMBIENT;
+                       break;
                case 'g':                              // gpufreq
                        nvidia->type = NV_GPU_FREQ;
                        break;
index c0d311f..071d3b4 100644 (file)
 #include <NVCtrl/NVCtrlLib.h>
 
 typedef enum _QUERY_ID {
-       NV_TEMP = NV_CTRL_GPU_CORE_TEMPERATURE,
-       NV_TEMP_THRESHOLD = NV_CTRL_GPU_CORE_THRESHOLD,
-       NV_GPU_FREQ = NV_CTRL_GPU_CURRENT_CLOCK_FREQS,
-       NV_MEM_FREQ = NV_CTRL_GPU_CURRENT_CLOCK_FREQS,
-       NV_IMAGE_QUALITY = NV_CTRL_IMAGE_SETTINGS
+       NV_TEMP,
+       NV_TEMP_THRESHOLD,
+       NV_TEMP_AMBIENT,
+       NV_GPU_FREQ,
+       NV_MEM_FREQ,
+       NV_IMAGE_QUALITY
 } QUERY_ID;
 
 struct nvidia_s {