summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2015-08-03 10:02:19 -0700
committerAaron Plattner <aplattner@nvidia.com>2015-08-03 10:02:19 -0700
commit3140376e0e1ba1836aa1e178c2618e538fa82d2d (patch)
tree51489c029d17d1b057d2b7bb3bfaeae3f00eba87
parentbd8f0fcdf04573cc8ff40be067a01169ba9c250b (diff)
355.06355.06
-rw-r--r--doc/version.mk2
-rw-r--r--samples/version.mk2
-rw-r--r--src/common-utils/nvgetopt.c35
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig-utils.c1
-rw-r--r--src/gtk+-2.x/ctkevent.c3
-rw-r--r--src/gtk+-2.x/ctkframelock.c75
-rw-r--r--src/gtk+-2.x/ctkframelock.h1
-rw-r--r--src/libXNVCtrl/NVCtrl.h12
-rw-r--r--src/libXNVCtrl/version.mk2
-rw-r--r--src/parse.c3
-rw-r--r--src/version.h2
-rw-r--r--src/version.mk2
-rw-r--r--version.mk2
13 files changed, 120 insertions, 22 deletions
diff --git a/doc/version.mk b/doc/version.mk
index 172316a..82747a7 100644
--- a/doc/version.mk
+++ b/doc/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 352.30
+NVIDIA_VERSION = 355.06
diff --git a/samples/version.mk b/samples/version.mk
index 172316a..82747a7 100644
--- a/samples/version.mk
+++ b/samples/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 352.30
+NVIDIA_VERSION = 355.06
diff --git a/src/common-utils/nvgetopt.c b/src/common-utils/nvgetopt.c
index 1716495..286aee8 100644
--- a/src/common-utils/nvgetopt.c
+++ b/src/common-utils/nvgetopt.c
@@ -205,6 +205,41 @@ int nvgetopt(int argc,
}
}
+ /*
+ * If we still didn't find a match, maybe this is a short option
+ * with its argument value concatenated (e.g., "-j8"). For now,
+ * limit this to short options with integer argument values.
+ */
+ if (!o && intval) {
+
+ /* Is the string after the first character an integer? */
+ int appendedInteger = NVGETOPT_FALSE;
+ if ((name[0] != '\0') && (name[1] != '\0')) {
+ char *endptr;
+ strtol(name + 1, &endptr, 0);
+ if (*endptr == '\0') {
+ /*
+ * The only characters after the first character are
+ * parsable by strtol(3).
+ */
+ appendedInteger = NVGETOPT_TRUE;
+ }
+ }
+
+ if (appendedInteger) {
+ for (i = 0; options[i].name; i++) {
+ if ((options[i].flags & NVGETOPT_INTEGER_ARGUMENT) == 0) {
+ continue;
+ }
+ if (options[i].val == name[0]) {
+ o = &options[i];
+ argument = name + 1;
+ break;
+ }
+ }
+ }
+ }
+
/* if we didn't find an option, return */
if (!o) {
diff --git a/src/gtk+-2.x/ctkdisplayconfig-utils.c b/src/gtk+-2.x/ctkdisplayconfig-utils.c
index c959dce..b585861 100644
--- a/src/gtk+-2.x/ctkdisplayconfig-utils.c
+++ b/src/gtk+-2.x/ctkdisplayconfig-utils.c
@@ -3656,6 +3656,7 @@ static Bool layout_add_screenless_modes_to_displays(nvLayoutPtr layout)
void layout_free(nvLayoutPtr layout)
{
if (layout) {
+ layout_remove_screens(layout);
layout_remove_gpus(layout);
NvCtrlFreeAllSystems(&layout->systems);
free(layout);
diff --git a/src/gtk+-2.x/ctkevent.c b/src/gtk+-2.x/ctkevent.c
index b4125f0..17a9127 100644
--- a/src/gtk+-2.x/ctkevent.c
+++ b/src/gtk+-2.x/ctkevent.c
@@ -339,6 +339,7 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_SHOW_GSYNC_VISUAL_INDICATOR);
MAKE_SIGNAL(NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL);
MAKE_SIGNAL(NV_CTRL_STEREO_SWAP_MODE);
+ MAKE_SIGNAL(NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED);
#undef MAKE_SIGNAL
/*
@@ -348,7 +349,7 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
* knows about.
*/
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED
#warning "There are attributes that do not emit signals!"
#endif
diff --git a/src/gtk+-2.x/ctkframelock.c b/src/gtk+-2.x/ctkframelock.c
index 57d8f1f..0fdde54 100644
--- a/src/gtk+-2.x/ctkframelock.c
+++ b/src/gtk+-2.x/ctkframelock.c
@@ -4625,7 +4625,45 @@ GtkWidget* ctk_framelock_new(CtrlTarget *ctrl_target,
FRAMELOCK_TARGET,
(int *)&num_framelocks);
if (ret != NvCtrlSuccess) return NULL;
- if (!num_framelocks) return NULL;
+ if (!num_framelocks) {
+ ret = NvCtrlGetAttribute(ctrl_target,
+ NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED,
+ &val);
+ if ((ret == NvCtrlSuccess) &&
+ (val == NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_TRUE)) {
+ /* Create blank framelock page to hold popup dialog */
+ object = g_object_new(CTK_TYPE_FRAMELOCK, NULL);
+ ctk_framelock = CTK_FRAMELOCK(object);
+ gtk_box_set_spacing(GTK_BOX(ctk_framelock), 10);
+
+ /* banner */
+ banner = ctk_banner_image_new(BANNER_ARTWORK_FRAMELOCK);
+ gtk_box_pack_start(GTK_BOX(ctk_framelock), banner, FALSE, FALSE, 0);
+
+ string = "The firmware on this Quadro Sync "
+ "card \n is not compatible with the GPUs connected to it.\n\n"
+ "Please visit "
+ "<http://www.nvidia.com/object/quadro-sync.html>\n "
+ "for instructions on installing the correct firmware.";
+
+ ctk_framelock->warn_dialog =
+ gtk_message_dialog_new (GTK_WINDOW(parent_window),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_OK,
+ "%s", string);
+
+ g_signal_connect_swapped(G_OBJECT(ctk_framelock->warn_dialog),
+ "response",
+ G_CALLBACK(gtk_widget_hide),
+ G_OBJECT(ctk_framelock->warn_dialog));
+
+ gtk_widget_show_all(GTK_WIDGET(ctk_framelock));
+
+ return GTK_WIDGET(object);
+ }
+ return NULL;
+ }
/* 1. - Create the frame lock widgets */
@@ -5843,6 +5881,10 @@ void ctk_framelock_config_file_attributes(GtkWidget *w,
{
CtkFramelock *ctk_framelock = (CtkFramelock *) w;
+ if (ctk_framelock->warn_dialog) {
+ return;
+ }
+
/* Add attributes from all the list entries */
add_entries_to_parsed_attributes
(((nvListTreePtr)(ctk_framelock->tree))->entries, head);
@@ -6059,13 +6101,18 @@ void ctk_framelock_select(GtkWidget *w)
/* Start the frame lock timers */
- ctk_config_start_timer(ctk_framelock->ctk_config,
- (GSourceFunc) update_framelock_status,
- (gpointer) ctk_framelock);
+ if (ctk_framelock->warn_dialog) {
+ /* Show firmware unsupported dialog */
+ gtk_widget_show_all (ctk_framelock->warn_dialog);
+ } else {
+ ctk_config_start_timer(ctk_framelock->ctk_config,
+ (GSourceFunc) update_framelock_status,
+ (gpointer) ctk_framelock);
- ctk_config_start_timer(ctk_framelock->ctk_config,
- (GSourceFunc) check_for_ethernet,
- (gpointer) ctk_framelock);
+ ctk_config_start_timer(ctk_framelock->ctk_config,
+ (GSourceFunc) check_for_ethernet,
+ (gpointer) ctk_framelock);
+ }
}
@@ -6082,11 +6129,13 @@ void ctk_framelock_unselect(GtkWidget *w)
/* Stop the frame lock timers */
- ctk_config_stop_timer(ctk_framelock->ctk_config,
- (GSourceFunc) update_framelock_status,
- (gpointer) ctk_framelock);
+ if (!ctk_framelock->warn_dialog) {
+ ctk_config_stop_timer(ctk_framelock->ctk_config,
+ (GSourceFunc) update_framelock_status,
+ (gpointer) ctk_framelock);
- ctk_config_stop_timer(ctk_framelock->ctk_config,
- (GSourceFunc) check_for_ethernet,
- (gpointer) ctk_framelock);
+ ctk_config_stop_timer(ctk_framelock->ctk_config,
+ (GSourceFunc) check_for_ethernet,
+ (gpointer) ctk_framelock);
+ }
}
diff --git a/src/gtk+-2.x/ctkframelock.h b/src/gtk+-2.x/ctkframelock.h
index 1cc76f9..6dcb071 100644
--- a/src/gtk+-2.x/ctkframelock.h
+++ b/src/gtk+-2.x/ctkframelock.h
@@ -88,6 +88,7 @@ struct _CtkFramelock
gboolean video_mode_read_only;
/* Dialogs */
+ GtkWidget *warn_dialog;
GtkWidget *add_devices_dialog;
GtkWidget *add_devices_entry;
diff --git a/src/libXNVCtrl/NVCtrl.h b/src/libXNVCtrl/NVCtrl.h
index e65540e..451729d 100644
--- a/src/libXNVCtrl/NVCtrl.h
+++ b/src/libXNVCtrl/NVCtrl.h
@@ -3425,7 +3425,17 @@
#define NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID 419 /* R-- */
-#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID
+/*
+ * NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED - Returns true if the
+ * Quadro Sync card connected to this GPU has a firmware version incompatible
+ * with this GPU.
+ */
+
+#define NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED 420 /* R--G */
+#define NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_FALSE 0
+#define NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED_TRUE 1
+
+#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED
/**************************************************************************/
diff --git a/src/libXNVCtrl/version.mk b/src/libXNVCtrl/version.mk
index 172316a..82747a7 100644
--- a/src/libXNVCtrl/version.mk
+++ b/src/libXNVCtrl/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 352.30
+NVIDIA_VERSION = 355.06
diff --git a/src/parse.c b/src/parse.c
index 6ab7877..6f1d6d7 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -214,6 +214,7 @@ const AttributeTableEntry attributeTable[] = {
{ "FrameLockHouseStatus", NV_CTRL_FRAMELOCK_HOUSE_STATUS, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "Returns whether or not the house sync signal was detected on the BNC connector of the frame lock board." },
{ "FrameLockEnable", NV_CTRL_FRAMELOCK_SYNC, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "Enable/disable the syncing of display devices to the frame lock pulse as specified by previous calls to FrameLockMaster and FrameLockSlaves." },
{ "FrameLockSyncReady", NV_CTRL_FRAMELOCK_SYNC_READY, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "Reports whether a slave frame lock board is receiving sync, whether or not any display devices are using the signal." },
+ { "FrameLockFirmwareUnsupported", NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED, INT_ATTR, {1,0,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "Returns true if the Quadro Sync card connected to this GPU has a firmware version incompatible with this GPU." },
{ "FrameLockStereoSync", NV_CTRL_FRAMELOCK_STEREO_SYNC, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "This indicates that the GPU stereo signal is in sync with the frame lock stereo signal." },
{ "FrameLockTestSignal", NV_CTRL_FRAMELOCK_TEST_SIGNAL, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "To test the connections in the sync group, tell the master to enable a test signal, then query port[01] status and sync_ready on all slaves. When done, tell the master to disable the test signal. Test signal should only be manipulated while FrameLockEnable is enabled. The FrameLockTestSignal is also used to reset the Universal Frame Count (as returned by the glXQueryFrameCountNV() function in the GLX_NV_swap_group extension). Note: for best accuracy of the Universal Frame Count, it is recommended to toggle the FrameLockTestSignal on and off after enabling frame lock." },
{ "FrameLockEthDetected", NV_CTRL_FRAMELOCK_ETHERNET_DETECTED, INT_ATTR, {1,1,0,0,1,0}, { .int_flags = {0,0,0,0,0,0,0} }, "The frame lock boards are cabled together using regular cat5 cable, connecting to RJ45 ports on the backplane of the card. There is some concern that users may think these are Ethernet ports and connect them to a router/hub/etc. The hardware can detect this and will shut off to prevent damage (either to itself or to the router). FrameLockEthDetected may be called to find out if Ethernet is connected to one of the RJ45 ports. An appropriate error message should then be displayed." },
@@ -383,7 +384,7 @@ const int attributeTableLen = ARRAY_LEN(attributeTable);
* the last attribute that the table knows about.
*/
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_CURRENT_XV_SYNC_TO_DISPLAY_ID
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GPU_FRAMELOCK_FIRMWARE_UNSUPPORTED
#warning "Have you forgotten to add a new integer attribute to attributeTable?"
#endif
diff --git a/src/version.h b/src/version.h
index 38ad022..3eba40f 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define NVIDIA_VERSION "352.30"
+#define NVIDIA_VERSION "355.06"
diff --git a/src/version.mk b/src/version.mk
index 172316a..82747a7 100644
--- a/src/version.mk
+++ b/src/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 352.30
+NVIDIA_VERSION = 355.06
diff --git a/version.mk b/version.mk
index 172316a..82747a7 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 352.30
+NVIDIA_VERSION = 355.06