1 /* 2 * Copyright 2003-2008, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Michael Phipps 7 * Jérôme Duval, jerome.duval@free.fr 8 */ 9 10 11 #include "ScreenSaverWindow.h" 12 13 #include <Application.h> 14 #include <View.h> 15 16 #include <WindowPrivate.h> 17 18 19 /*! 20 This is the BDirectWindow subclass that rendering occurs in. 21 A view is added to it so that BView based screensavers will work. 22 */ 23 ScreenSaverWindow::ScreenSaverWindow(BRect frame) 24 : BDirectWindow(frame, "ScreenSaver Window", 25 B_NO_BORDER_WINDOW_LOOK, kWindowScreenFeel, 26 B_NOT_RESIZABLE | B_NOT_ZOOMABLE), 27 fSaver(NULL) 28 { 29 frame.OffsetTo(0, 0); 30 fTopView = new BView(frame, "ScreenSaver View", B_FOLLOW_ALL, B_WILL_DRAW); 31 fTopView->SetViewColor(0, 0, 0); 32 AddChild(fTopView); 33 } 34 35 36 ScreenSaverWindow::~ScreenSaverWindow() 37 { 38 Hide(); 39 } 40 41 42 void 43 ScreenSaverWindow::SetSaver(BScreenSaver *saver) 44 { 45 fSaver = saver; 46 } 47 48 49 bool 50 ScreenSaverWindow::QuitRequested() 51 { 52 be_app->PostMessage(B_QUIT_REQUESTED); 53 return true; 54 } 55 56 57 void 58 ScreenSaverWindow::DirectConnected(direct_buffer_info *info) 59 { 60 if (fSaver) 61 fSaver->DirectConnected(info); 62 } 63 64