- int i, n;
- struct psensor **tmp, **ss, *s;
-
- n = init();
-
- ss = sensors;
- for (i = 0; i < n; i++) {
- s = create_nvidia_sensor(i, SENSOR_TYPE_TEMP, values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_nvidia_sensor
- (i,
- SENSOR_TYPE_USAGE | SENSOR_TYPE_AMBIENT,
- values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_nvidia_sensor
- (i,
- SENSOR_TYPE_USAGE | SENSOR_TYPE_GRAPHICS,
- values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_nvidia_sensor
- (i,
- SENSOR_TYPE_USAGE | SENSOR_TYPE_VIDEO,
- values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_nvidia_sensor
- (i,
- SENSOR_TYPE_USAGE | SENSOR_TYPE_MEMORY,
- values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
- s = create_nvidia_sensor
- (i,
- SENSOR_TYPE_USAGE | SENSOR_TYPE_PCIE,
- values_len);
- tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
-
- ss = tmp;
+ int i, n, utype;
+ Bool ret;
+
+ if (!init())
+ return;
+
+ ret = XNVCTRLQueryTargetCount(display, NV_CTRL_TARGET_TYPE_GPU, &n);
+ if (ret == True) {
+ for (i = 0; i < n; i++) {
+ add(ss,
+ i,
+ SENSOR_TYPE_GPU | SENSOR_TYPE_TEMP,
+ values_len);
+
+ utype = SENSOR_TYPE_GPU | SENSOR_TYPE_PERCENT;
+ add(ss, i, utype | SENSOR_TYPE_AMBIENT, values_len);
+ add(ss, i, utype | SENSOR_TYPE_GRAPHICS, values_len);
+ add(ss, i, utype | SENSOR_TYPE_VIDEO, values_len);
+ add(ss, i, utype | SENSOR_TYPE_MEMORY, values_len);
+ add(ss, i, utype | SENSOR_TYPE_PCIE, values_len);
+ }