tests: derive XglShaderObj from xgl_testing::Shader
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index d1c5d10..8d59fd2 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -647,7 +647,7 @@
     XGL_PIPELINE_SHADER_STAGE_CREATE_INFO *stageInfo = (XGL_PIPELINE_SHADER_STAGE_CREATE_INFO*) calloc( 1,sizeof(XGL_PIPELINE_SHADER_STAGE_CREATE_INFO) );
     stageInfo->sType = XGL_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
     stageInfo->shader.stage = m_stage;
-    stageInfo->shader.shader = m_shader;
+    stageInfo->shader.shader = obj();
     stageInfo->shader.descriptorSetMapping[0].descriptorCount = 0;
     stageInfo->shader.linkConstBufferCount = 0;
     stageInfo->shader.pLinkConstBufferInfo = XGL_NULL_HANDLE;
@@ -740,10 +740,7 @@
         ((uint32_t *) createInfo.pCode)[2] = stage;
         memcpy(((uint32_t *) createInfo.pCode + 3), shader_code, shader_len + 1);
 
-        err = xglCreateShader(m_device->device(), &createInfo, &m_shader);
-        if (err) {
-            free((void *) createInfo.pCode);
-        }
+        err = init_try(*m_device, createInfo);
     }
 
     if (framework->m_use_bil || err) {
@@ -755,14 +752,9 @@
         createInfo.pCode = bil.data();
         createInfo.codeSize = bil.size() * sizeof(unsigned int);
         createInfo.flags = 0;
-        err = xglCreateShader(m_device->device(), &createInfo, &m_shader);
-        assert(!err);
-    }
-}
 
-XglShaderObj::~XglShaderObj()
-{
-    if (m_shader != XGL_NULL_HANDLE) xglDestroyObject(m_shader);
+        init(*m_device, createInfo);
+    }
 }
 
 XglPipelineObj::XglPipelineObj(XglDevice *device)