47 lines
671 B
C++
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;
|
|
}
|