Browse Source

Signal GPU object data loss only when recovery is possible.

Lasse Öörni 13 years ago
parent
commit
35bec043ad

+ 1 - 5
Engine/Graphics/Direct3D9/D3D9IndexBuffer.cpp

@@ -59,10 +59,7 @@ IndexBuffer::~IndexBuffer()
 void IndexBuffer::OnDeviceLost()
 {
     if (pool_ == D3DPOOL_DEFAULT)
-    {
         Release();
-        dataLost_ = true;
-    }
 }
 
 void IndexBuffer::OnDeviceReset()
@@ -70,8 +67,7 @@ void IndexBuffer::OnDeviceReset()
     if (pool_ == D3DPOOL_DEFAULT)
     {
         Create();
-        if (UpdateToGPU())
-            dataLost_ = false;
+        dataLost_ = !UpdateToGPU();
     }
 }
 

+ 4 - 7
Engine/Graphics/Direct3D9/D3D9Texture2D.cpp

@@ -75,10 +75,7 @@ bool Texture2D::Load(Deserializer& source)
 void Texture2D::OnDeviceLost()
 {
     if (pool_ == D3DPOOL_DEFAULT)
-    {
         Release();
-        dataLost_ = true;
-    }
 }
 
 void Texture2D::OnDeviceReset()
@@ -87,12 +84,12 @@ void Texture2D::OnDeviceReset()
     {
         // If has a file name, reload through the resource cache. Otherwise just recreate.
         if (!GetName().Trimmed().Empty())
-        {
-            if (GetSubsystem<ResourceCache>()->ReloadResource(this))
-                dataLost_ = false;
-        }
+            dataLost_ = !GetSubsystem<ResourceCache>()->ReloadResource(this);
         else
+        {
             Create();
+            dataLost_ = true;
+        }
     }
 }
 

+ 4 - 7
Engine/Graphics/Direct3D9/D3D9TextureCube.cpp

@@ -62,10 +62,7 @@ void TextureCube::RegisterObject(Context* context)
 void TextureCube::OnDeviceLost()
 {
     if (pool_ == D3DPOOL_DEFAULT)
-    {
         Release();
-        dataLost_ = true;
-    }
 }
 
 void TextureCube::OnDeviceReset()
@@ -74,12 +71,12 @@ void TextureCube::OnDeviceReset()
     {
         // If has a file name, reload through the resource cache. Otherwise just recreate.
         if (!GetName().Trimmed().Empty())
-        {
-            if (GetSubsystem<ResourceCache>()->ReloadResource(this))
-                dataLost_ = false;
-        }
+            dataLost_ = !GetSubsystem<ResourceCache>()->ReloadResource(this);
         else
+        {
             Create();
+            dataLost_ = true;
+        }
     }
 }
 

+ 1 - 5
Engine/Graphics/Direct3D9/D3D9VertexBuffer.cpp

@@ -94,10 +94,7 @@ VertexBuffer::~VertexBuffer()
 void VertexBuffer::OnDeviceLost()
 {
     if (pool_ == D3DPOOL_DEFAULT)
-    {
         Release();
-        dataLost_ = true;
-    }
 }
 
 void VertexBuffer::OnDeviceReset()
@@ -105,8 +102,7 @@ void VertexBuffer::OnDeviceReset()
     if (pool_ == D3DPOOL_DEFAULT)
     {
         Create();
-        if (UpdateToGPU())
-            dataLost_ = false;
+        dataLost_ = !UpdateToGPU();
     }
 }
 

+ 1 - 4
Engine/Graphics/OpenGL/OGLIndexBuffer.cpp

@@ -60,8 +60,6 @@ IndexBuffer::~IndexBuffer()
 void IndexBuffer::OnDeviceLost()
 {
     GPUObject::OnDeviceLost();
-    
-    dataLost_ = true;
 }
 
 void IndexBuffer::OnDeviceReset()
@@ -69,8 +67,7 @@ void IndexBuffer::OnDeviceReset()
     if (!object_)
     {
         Create();
-        if (UpdateToGPU())
-            dataLost_ = false;
+        dataLost_ = !UpdateToGPU();
     }
 }
 

+ 4 - 6
Engine/Graphics/OpenGL/OGLTexture2D.cpp

@@ -79,20 +79,18 @@ void Texture2D::OnDeviceLost()
     
     if (renderSurface_)
         renderSurface_->OnDeviceLost();
-    
-    dataLost_ = true;
 }
 
 void Texture2D::OnDeviceReset()
 {
     // If has a file name, reload through the resource cache. Otherwise just recreate.
     if (!GetName().Trimmed().Empty())
-    {
-        if (GetSubsystem<ResourceCache>()->ReloadResource(this))
-            dataLost_ = false;
-    }
+        dataLost_ = !GetSubsystem<ResourceCache>()->ReloadResource(this);
     else
+    {
         Create();
+        dataLost_ = true;
+    }
 }
 
 void Texture2D::Release()

+ 4 - 6
Engine/Graphics/OpenGL/OGLTextureCube.cpp

@@ -69,20 +69,18 @@ void TextureCube::OnDeviceLost()
         if (renderSurfaces_[i])
             renderSurfaces_[i]->OnDeviceLost();
     }
-    
-    dataLost_ = true;
 }
 
 void TextureCube::OnDeviceReset()
 {
     // If has a file name, reload through the resource cache. Otherwise just recreate.
     if (!GetName().Trimmed().Empty())
-    {
-        if (GetSubsystem<ResourceCache>()->ReloadResource(this))
-            dataLost_ = false;
-    }
+        dataLost_ = !GetSubsystem<ResourceCache>()->ReloadResource(this);
     else
+    {
         Create();
+        dataLost_ = true;
+    }
 }
 
 void TextureCube::Release()

+ 1 - 4
Engine/Graphics/OpenGL/OGLVertexBuffer.cpp

@@ -146,8 +146,6 @@ VertexBuffer::~VertexBuffer()
 void VertexBuffer::OnDeviceLost()
 {
     GPUObject::OnDeviceLost();
-    
-    dataLost_ = true;
 }
 
 void VertexBuffer::OnDeviceReset()
@@ -155,8 +153,7 @@ void VertexBuffer::OnDeviceReset()
     if (!object_)
     {
         Create();
-        if (UpdateToGPU())
-            dataLost_ = false;
+        dataLost_ = !UpdateToGPU();
     }
 }