#include "torsmo.h"
#include "NVCtrl.h"
#include "NVCtrlLib.h"
/* nvctrl */
unsigned int init_nvctrl(const char *feat) {
if (strcmp(feat, "temp") == 0)
return NV_CTRL_GPU_CORE_TEMPERATURE;
else if (strcmp(feat, "ambient") == 0)
return NV_CTRL_AMBIENT_TEMPERATURE;
else
ERR("Unknown parameter %s for nvctrl", feat);
return 0;
}
int get_nvctrl_info(unsigned int arg) {
if(arg == 0) return -1;
Display* dpy = XOpenDisplay(NULL);
if (!dpy) {
ERR("Cannot open display '%s'.", XDisplayName(NULL));
return -1;
}
int screen = DefaultScreen(dpy);
if (!XNVCTRLIsNvScreen(dpy, screen)) {
ERR("The NV-CONTROL X not available on screen %d of '%s'.", screen, XDisplayName(NULL));
return -1;
}
int display_devices;
Bool ret = XNVCTRLQueryAttribute(dpy, screen, 0, NV_CTRL_ENABLED_DISPLAYS, &display_devices);
if (!ret) {
ERR("Unable to determine enabled display devices for screen %d of '%s'\n", screen, XDisplayName(NULL));
return -1;
}
// get temp for first display found
int mask;
for (mask = 1; mask < (1<<24); mask <<= 1) {
if (!(mask & display_devices)) continue;
int retval;
ret = XNVCTRLQueryAttribute(dpy, screen, mask, arg, &retval);
return (ret ? retval : -1);
}
return -1;
}
syntax highlighted by Code2HTML, v. 0.9.1