-#include "glwindow.h"
-
-/*
- * A trigger that exits whenever it's trigged (used when we change big things
- * such as starting a new tournament, and it's not really worth doing a clean
- * change).
- */
-class ExitTrigger : pqxx::trigger {
-public:
- ExitTrigger(pqxx::connection_base &conn, const PGSTD::string &name)
- : pqxx::trigger(conn, name) {}
+#include <SDL.h>
+
+#include "flagtrigger.h"
+#include "widestring.h"
+#include "fetch_current_tournament.h"
+#include "fetch_list_of_active_groups.h"
+#include "fetch_list_of_finished_groups.h"
+#include "fetch_group.h"
+#include "fetch_auxilliary_screens.h"
+#include "fonts.h"
+#include "groupscreen.h"
+#include "top10scorescreen.h"
+#include "top5chosenscreen.h"
+#include "splitscreen.h"
+#include "rotatescreen.h"
+
+SDL_Surface *screen = NULL;
+
+Tournament active_tournament;
+std::vector<SkeletonGroup> active_groups;
+std::vector<GenericScreen *> screens;
+GenericScreen *mainscreen = NULL;
+unsigned char framebuf[SCREEN_WIDTH * SCREEN_HEIGHT * 4], screenbuf[SCREEN_WIDTH * SCREEN_HEIGHT * 4];
+
+void init(pqxx::connection &conn)
+{
+ std::vector<widestring> aux_screens;
+
+ if (screens.size() == 0 || mainscreen != screens[0])
+ delete mainscreen;
+
+ for (std::vector<GenericScreen *>::const_iterator i = screens.begin(); i != screens.end(); ++i) {
+ delete *i;
+ }
+ screens.erase(screens.begin(), screens.end());
+
+ RotateScreen *rs = new RotateScreen();
+ mainscreen = rs;