speed-dreams/src/libs/tgfclient/guistack.cpp

47 lines
671 B
C++

#include "guistack.h"
#include "tgfclient.h"
#include <stack>
#include <cstddef>
GuiStack &
GuiStack::get()
{
static GuiStack stack;
return stack;
}
void *
GuiStack::top()
{
GuiStack &g = get();
return g.screens.empty() ? NULL : g.screens.top();
}
void
GuiStack::push(void *screen)
{
get().screens.push(screen);
GfuiScreenActivate(screen);
}
void *
GuiStack::pop()
{
void *ret;
GuiStack &g = get();
if (g.screens.empty())
return NULL;
GfuiScreenRelease(g.screens.top());
g.screens.pop();
if (g.screens.empty())
return NULL;
ret = g.screens.top();
GfuiScreenActivate(ret);
return ret;
}