diff --git a/include/xgl.h b/include/xgl.h
index d67b442..59254a3 100644
--- a/include/xgl.h
+++ b/include/xgl.h
@@ -47,7 +47,7 @@
 */
 
 #ifdef __cplusplus
-    #define XGL_DEFINE_HANDLE(_obj) struct _obj##_T {}; typedef _obj##_T* _obj;
+    #define XGL_DEFINE_HANDLE(_obj) struct _obj##_T {char _dummy;}; typedef _obj##_T* _obj;
     #define XGL_DEFINE_SUBCLASS_HANDLE(_obj, _base) struct _obj##_T : public _base##_T {}; typedef _obj##_T* _obj;
 #else // __cplusplus
     #define XGL_DEFINE_HANDLE(_obj) typedef void* _obj;
@@ -224,7 +224,7 @@
     XGL_ATTACHMENT_STORE_OP_BEGIN_RANGE                     = XGL_ATTACHMENT_STORE_OP_STORE,
     XGL_ATTACHMENT_STORE_OP_END_RANGE                       = XGL_ATTACHMENT_STORE_OP_DONT_CARE,
     XGL_NUM_ATTACHMENT_STORE_OP                             = (XGL_ATTACHMENT_STORE_OP_END_RANGE - XGL_ATTACHMENT_STORE_OP_BEGIN_RANGE + 1),
-   XGL_MAX_ENUM(_XGL_ATTACHMENT_STORE_OP)
+    XGL_MAX_ENUM(_XGL_ATTACHMENT_STORE_OP)
 } XGL_ATTACHMENT_STORE_OP;
 
 typedef enum _XGL_IMAGE_TYPE
@@ -1643,7 +1643,7 @@
     XGL_WAIT_EVENT                          waitEvent;                  // Pipeline event where the wait should happen
 
     uint32_t                                memBarrierCount;            // Number of memory barriers
-    const void**                            pMemBarriers;               // Array of pointers to memory barriers (any of them can be either XGL_MEMORY_BARRIER, XGL_BUFFER_MEMORY_BARRIER, or XGL_IMAGE_MEMORY_BARRIER)
+    const void**                            ppMemBarriers;              // Array of pointers to memory barriers (any of them can be either XGL_MEMORY_BARRIER, XGL_BUFFER_MEMORY_BARRIER, or XGL_IMAGE_MEMORY_BARRIER)
 } XGL_EVENT_WAIT_INFO;
 
 typedef struct _XGL_PIPELINE_BARRIER
@@ -1657,7 +1657,7 @@
     XGL_WAIT_EVENT                          waitEvent;                  // Pipeline event where the wait should happen
 
     uint32_t                                memBarrierCount;            // Number of memory barriers
-    const void**                            pMemBarriers;               // Array of pointers to memory barriers (any of them can be either XGL_MEMORY_BARRIER, XGL_BUFFER_MEMORY_BARRIER, or XGL_IMAGE_MEMORY_BARRIER)
+    const void**                            ppMemBarriers;              // Array of pointers to memory barriers (any of them can be either XGL_MEMORY_BARRIER, XGL_BUFFER_MEMORY_BARRIER, or XGL_IMAGE_MEMORY_BARRIER)
 } XGL_PIPELINE_BARRIER;
 
 typedef struct _XGL_MEMORY_BARRIER
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index aae03b1..ae5d32b 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -912,7 +912,7 @@
     pipeline_barrier.pEvents = set_events;
     pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
     pipeline_barrier.memBarrierCount = 1;
-    pipeline_barrier.pMemBarriers = (const void **)&pmemory_barrier;
+    pipeline_barrier.ppMemBarriers = (const void **)&pmemory_barrier;
     xglCmdPipelineBarrier(cmd_.obj(), &pipeline_barrier);
 
     XGL_BUFFER_COPY region = {};
@@ -927,7 +927,7 @@
     pipeline_barrier.pEvents = set_events;
     pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
     pipeline_barrier.memBarrierCount = 1;
-    pipeline_barrier.pMemBarriers = (const void **)&pmemory_barrier;
+    pipeline_barrier.ppMemBarriers = (const void **)&pmemory_barrier;
     xglCmdPipelineBarrier(cmd_.obj(), &pipeline_barrier);
 
     xglCmdCopyBuffer(cmd_.obj(), bufs[1].obj(), bufs[2].obj(), 1, &region);
@@ -948,7 +948,7 @@
     wait_info.pEvents = &event;
     wait_info.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
     wait_info.memBarrierCount = 1;
-    wait_info.pMemBarriers = (const void **)&pmemory_barrier;
+    wait_info.ppMemBarriers = (const void **)&pmemory_barrier;
     xglCmdWaitEvents(cmd_.obj(), &wait_info);
 
     cmd_.end();
@@ -1471,7 +1471,7 @@
         pipeline_barrier.pEvents = set_events;
         pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
         pipeline_barrier.memBarrierCount = to_clear.size();
-        pipeline_barrier.pMemBarriers = (const void **)&p_to_clear[0];
+        pipeline_barrier.ppMemBarriers = (const void **)&p_to_clear[0];
         xglCmdPipelineBarrier(cmd_.obj(), &pipeline_barrier);
 
         if (test_raw_) {
@@ -1485,7 +1485,7 @@
         pipeline_barrier.pEvents = set_events;
         pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
         pipeline_barrier.memBarrierCount = to_xfer.size();
-        pipeline_barrier.pMemBarriers = (const void **)&p_to_xfer[0];
+        pipeline_barrier.ppMemBarriers = (const void **)&p_to_xfer[0];
         xglCmdPipelineBarrier(cmd_.obj(), &pipeline_barrier);
 
         cmd_.end();
@@ -1703,7 +1703,7 @@
         pipeline_barrier.pEvents = set_events;
         pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
         pipeline_barrier.memBarrierCount = to_clear.size();
-        pipeline_barrier.pMemBarriers = (const void **)&p_to_clear[0];
+        pipeline_barrier.ppMemBarriers = (const void **)&p_to_clear[0];
         xglCmdPipelineBarrier(cmd_.obj(), &pipeline_barrier);
 
         xglCmdClearDepthStencil(cmd_.obj(), img.obj(), depth, stencil, ranges.size(), &ranges[0]);
@@ -1713,7 +1713,7 @@
         pipeline_barrier.pEvents = set_events;
         pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
         pipeline_barrier.memBarrierCount = to_xfer.size();
-        pipeline_barrier.pMemBarriers = (const void **)&p_to_xfer[0];
+        pipeline_barrier.ppMemBarriers = (const void **)&p_to_xfer[0];
         xglCmdPipelineBarrier(cmd_.obj(), &pipeline_barrier);
 
         cmd_.end();
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index c11d350..e8ce14d 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -602,7 +602,7 @@
     pipeline_barrier.pEvents = set_events;
     pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
     pipeline_barrier.memBarrierCount = 1;
-    pipeline_barrier.pMemBarriers = (const void **)&pmemory_barrier;
+    pipeline_barrier.ppMemBarriers = (const void **)&pmemory_barrier;
 
     // write barrier to the command buffer
     m_commandBuffer->PipelineBarrier(&pipeline_barrier);
@@ -1034,7 +1034,7 @@
     pipeline_barrier.pEvents = set_events;
     pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
     pipeline_barrier.memBarrierCount = 1;
-    pipeline_barrier.pMemBarriers = (const void **)&pmemory_barrier;
+    pipeline_barrier.ppMemBarriers = (const void **)&pmemory_barrier;
 
     // clear the back buffer to dark grey
     uint32_t clearColor[4] = {64, 64, 64, 0};
@@ -1121,7 +1121,7 @@
     pipeline_barrier.pEvents = set_events;
     pipeline_barrier.waitEvent = XGL_WAIT_EVENT_TOP_OF_PIPE;
     pipeline_barrier.memBarrierCount = 1;
-    pipeline_barrier.pMemBarriers = (const void **)&pmemory_barrier;
+    pipeline_barrier.ppMemBarriers = (const void **)&pmemory_barrier;
 
     for(i=0; i<m_renderTargetCount; i++)
     {
