public static void Main(string[] args) {
			UDPPlayerData udp = new UDPPlayerData();
			
			SDLController c = new SDLController();
			
//			LinearPreset preset = new LinearPreset();
//			
//			ClearScreen clear = new ClearScreen();
//			clear.ClearColor = new Color(0, 0, 0, 0.3f);
//			
//			preset.Effects.Add(clear);
//			Scope s = new Scope();
//			preset.Effects.Add(s);
//			s.Color = new Color(0, 1, 0);
//			s.Circular = true;
			
			TestTimedPreset preset = new TestTimedPreset();
			
			c.Renderer = preset;
			c.Initialize();
			c.PlayerData = udp;
			
			bool run = true;
			
			c.Closed += delegate {
				run = false;
			};
			
			while (run) {
				udp.Update(-1);
				c.RenderFrame();
			}
			
			c.Destroy();
		}
		public MainWindow() : base(Gtk.WindowType.Toplevel) {
			mSingleton = this;
			
			Build();
			
			this.mController = new SDLController();
			this.mController.Closed += delegate {
				this.Quit();
			};
			this.mController.PlayerData = new UDPPlayerData();
			
			new Thread(this.ControllerLoop).Start();
			
			this.mUpdaterThread = new Thread(this.UpdaterLoop);
			this.mUpdaterThread.Start();
			
			this.StatusBar.Push(0, "");
			
			GLib.Timeout.Add(1000, this.FPSLoop);
			
			this.mSoapFilter.Name = "OpenVP preset (XML)";
			this.mSoapFilter.AddPattern("*.ovp");
			
			this.mBinaryFilter.Name = "OpenVP preset (binary)";
			this.mBinaryFilter.AddPattern("*.ovpb");
			
			while (!this.mInitialized);
		}