xref: /haiku/src/bin/screen_blanker/ScreenSaverWindow.cpp (revision a4ef4a49150f118d47324242917a596a3f8f8bd5)
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