diff --git a/dwss.cc b/dwss.cc index 6910915..2f05126 100644 --- a/dwss.cc +++ b/dwss.cc @@ -16,11 +16,11 @@ using namespace std; #define MAX_ASPECT (16.0/9.0*1.02) static int n_monitors = 1; -static Mode *current_mode; +static Mode *current_mode = NULL; static bool expose (GnomeScreensaver & gs) { - return current_mode->expose(gs); + return current_mode != NULL ? current_mode->expose(gs) : true; } static bool configure (GnomeScreensaver & gs, int width, int height) @@ -30,23 +30,26 @@ static bool configure (GnomeScreensaver & gs, int width, int height) n_monitors++) ; - return current_mode->configure(gs, width, height); + return current_mode != NULL + ? current_mode->configure(gs, width, height) + : true; } static bool update (GnomeScreensaver & gs) { - return current_mode->update(gs); + return current_mode != NULL ? current_mode->update(gs) : true; } int main (int argc, char *argv[]) { + GnomeScreensaver gs(&argc, &argv, configure, expose, update, 12); + Mode *modes[] = { new Spin() }; current_mode = modes[0]; - GnomeScreensaver gs(&argc, &argv, configure, expose, update, 12); gs.mainloop(); for (int i = 0; i < sizeof(modes)/sizeof(modes[0]); i++)