[usdviewq] Update renderer selection before drawing
authordavidgyu <davidgyu@users.noreply.github.com>
Wed, 20 Dec 2023 22:48:43 +0000 (14:48 -0800)
committerpixar-oss <pixar-oss@users.noreply.github.com>
Wed, 20 Dec 2023 22:48:43 +0000 (14:48 -0800)
Updated Usdviewq.StageView to update renderer selection
state just before drawing (like other renderer parameters)
instead of directly from the updateSelection() method, which
might be executed when it is not possible to access the
renderer, e.g. before a current GL context has been made
current during startup.

This avoids some errors that can occur during start up
when usdview is using PySide6 on Linux and Windows.

Updated test baselines which now correctly display selected
prims.

Tested with PySide6 and PySide2.

(Internal change: 2309688)

pxr/usdImaging/bin/testusdview/testenv/testUsdviewDeactivate/baseline/parentChildDeactivate2.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/capsule1.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/capsule2.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cone1.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cone2.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cube1.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cube2.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cylinder1.png
pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cylinder2.png
pxr/usdImaging/usdviewq/appController.py
pxr/usdImaging/usdviewq/stageView.py

index b1ec99eb7721667374ecee5f67227bbc5571a9a0..377a41dd7ecd84b48fa99016440e044a98c0a82f 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDeactivate/baseline/parentChildDeactivate2.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDeactivate/baseline/parentChildDeactivate2.png differ
index 3b0c53791661d2b5014b4691bdba59434c70896d..0ee749c95cd17c39d8695dc3b3f6727b52fb32b7 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/capsule1.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/capsule1.png differ
index 3757318a0d2eb1cd13e5f02da96eba9d34354e48..eded252b8f0ecdaec2f28128a612573cbe02b705 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/capsule2.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/capsule2.png differ
index fd7bc6595ca4af7b370c9ebdb7548e4d1e35ca64..74fa973c9fa96ffac91b559f31a64812ce72d6dd 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cone1.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cone1.png differ
index afd87246b1ddde9d1e20d583fcffc6e552f203ab..5293520b756f1d608346a47fe1e77380f65e67b0 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cone2.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cone2.png differ
index 669e85e3ec761bcc54abba0794a606aae2d2ff29..02526db881aa4dea52411708b7dcd6baecbb50f4 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cube1.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cube1.png differ
index eccbac5fb25bd010570f7848e156264ac117bcd8..920c308a9a59b2b7bb1e796560004599665c9aaf 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cube2.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cube2.png differ
index b02e53b38394148a73d580ca3b9b55bc94d4d8e9..1b57a61a86764ce81e682c0e32f60297c2e7110e 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cylinder1.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cylinder1.png differ
index b02e53b38394148a73d580ca3b9b55bc94d4d8e9..1b57a61a86764ce81e682c0e32f60297c2e7110e 100644 (file)
Binary files a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cylinder2.png and b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewVariantSelection/baseline/cylinder2.png differ
index ced1893ea6ea256b5a02eae658cb4f661814824f..6c01056ad7dbd5c96895d96b430ff2237d2ed24b 100644 (file)
@@ -1963,6 +1963,7 @@ class AppController(QtCore.QObject):
             self._updateCompositionView()
 
             if self._stageView:
+                self._stageView.updateSelection()
                 self._stageView.update()
 
     def updateGUI(self):
index d6ffe59f4a6bf7738d6b8bd59ba45f00ae006a7a..879899730471e477d598d021c749b4c8fd59da8c 100644 (file)
@@ -892,6 +892,9 @@ class StageView(QGLWidget):
         self._renderPauseState = False
         self._renderStopState = False
         self._reportedContextError = False
+
+        self._rendererSelectionNeedsUpdate = True
+
         self._renderModeDict = {
             RenderModes.WIREFRAME: UsdImagingGL.DrawMode.DRAW_WIREFRAME,
             RenderModes.WIREFRAME_ON_SURFACE: 
@@ -1367,6 +1370,14 @@ class StageView(QGLWidget):
         self.updateGL()
 
     def updateSelection(self):
+        self._rendererSelectionNeedsUpdate = True
+        self.update()
+
+    def _processSelection(self):
+        if not self._rendererSelectionNeedsUpdate:
+            return
+        self._rendererSelectionNeedsUpdate = False
+
         try:
             renderer = self._getRenderer()
             if not renderer:
@@ -1468,6 +1479,7 @@ class StageView(QGLWidget):
             self._dataModel.viewSettings.domeLightTexturesVisible)
 
         self._processBBoxes()
+        self._processSelection()
 
         try:
             renderer.Render(pseudoRoot, self._renderParams)
@@ -2381,4 +2393,4 @@ class StageView(QGLWidget):
         if not self._renderer:
             return False
 
-        return self._renderer.PollForAsynchronousUpdates()
\ No newline at end of file
+        return self._renderer.PollForAsynchronousUpdates()