expand GraphicsContextResource to self-register itself with GraphicsDevice

This commit is contained in:
Gered 2013-04-01 13:12:48 -04:00
parent b0db10f77a
commit 183631c5e6
2 changed files with 43 additions and 3 deletions

View file

@ -0,0 +1,26 @@
#include "../debug.h"
#include "graphicscontextresource.h"
#include "graphicsdevice.h"
GraphicsContextResource::GraphicsContextResource()
{
STACK_TRACE;
m_graphicsDevice = NULL;
}
GraphicsContextResource::GraphicsContextResource(GraphicsDevice *graphicsDevice)
{
STACK_TRACE;
ASSERT(graphicsDevice != NULL);
m_graphicsDevice = graphicsDevice;
m_graphicsDevice->RegisterManagedResource(this);
}
GraphicsContextResource::~GraphicsContextResource()
{
STACK_TRACE;
if (m_graphicsDevice != NULL)
m_graphicsDevice->UnregisterManagedResource(this);
}

View file

@ -1,23 +1,37 @@
#ifndef __FRAMEWORK_GRAPHICS_GRAPHICSCONTEXTRESOURCE_H_INCLUDED__
#define __FRAMEWORK_GRAPHICS_GRAPHICSCONTEXTRESOURCE_H_INCLUDED__
#include "../common.h"
class GraphicsDevice;
/**
* Interface for objects whose lifecycle is tied to the current graphics
* Base class for objects whose lifecycle is tied to the current graphics
* context and should be made aware when the context is lost and/or
* recreated.
*/
class GraphicsContextResource
{
public:
GraphicsContextResource();
GraphicsContextResource(GraphicsDevice *graphicsDevice);
virtual ~GraphicsContextResource();
/**
* New OpenGL graphics context creation callback.
*/
virtual void OnNewContext() = 0;
virtual void OnNewContext() {}
/**
* Lost OpenGL graphics context callback.
*/
virtual void OnLostContext() = 0;
virtual void OnLostContext() {}
GraphicsDevice* GetGraphicsDevice() const { return m_graphicsDevice; }
private:
GraphicsDevice *m_graphicsDevice;
};
#endif