Index: /trunk/src/VBox/Additions/common/crOpenGL/load.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/load.c	(revision 42522)
+++ /trunk/src/VBox/Additions/common/crOpenGL/load.c	(revision 42523)
@@ -1071,5 +1071,5 @@
             stub.spu->dispatch_table.VBoxPackSetInjectThread(NULL);
 #if defined(WINDOWS) && defined(VBOX_WITH_WDDM)
-    if (!spuConnection)
+    if (stub.bRunningUnderWDDM && !spuConnection)
     {
         crError("VBoxPackSetInjectThread failed!");
Index: /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c	(revision 42522)
+++ /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c	(revision 42523)
@@ -588,15 +588,14 @@
 void PACKSPU_APIENTRY packspu_VBoxDetachThread()
 {
-    int i;
-    GET_THREAD(thread);
-
-    if (thread)
-    {
-        if (CRPACKSPU_IS_WDDM_CRHGSMI())
-        {
-            crPackSetContext(NULL);
-            crSetTSD(&_PackTSD, NULL);
-        }
-        else
+    if (CRPACKSPU_IS_WDDM_CRHGSMI())
+    {
+        crPackSetContext(NULL);
+        crSetTSD(&_PackTSD, NULL);
+    }
+    else
+    {
+        int i;
+        GET_THREAD(thread);
+        if (thread)
         {
             crLockMutex(&_PackMutex);
