1/*
2 * Copyright 2005-2008, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT license.
4 *
5 * Author:
6 *		Stephan A��mus <superstippi@gmx.de>
7 */
8
9
10#include "OffscreenWindow.h"
11
12#include <new>
13#include <stdio.h>
14
15#include <Debug.h>
16
17#include <WindowPrivate.h>
18
19#include "BitmapHWInterface.h"
20#include "DrawingEngine.h"
21#include "ServerBitmap.h"
22
23using std::nothrow;
24
25
26OffscreenWindow::OffscreenWindow(ServerBitmap* bitmap,
27		const char* name, ::ServerWindow* window)
28	: Window(bitmap->Bounds(), name,
29			B_NO_BORDER_WINDOW_LOOK, kOffscreenWindowFeel,
30			0, 0, window, new (nothrow) DrawingEngine()),
31	fBitmap(bitmap),
32	fHWInterface(new (nothrow) BitmapHWInterface(fBitmap))
33{
34	if (!fHWInterface.IsSet() || !GetDrawingEngine())
35		return;
36
37	fHWInterface->Initialize();
38	GetDrawingEngine()->SetHWInterface(fHWInterface.Get());
39
40	fVisibleRegion.Set(fFrame);
41	fVisibleContentRegion.Set(fFrame);
42	fVisibleContentRegionValid = true;
43	fContentRegion.Set(fFrame);
44	fContentRegionValid = true;
45}
46
47
48OffscreenWindow::~OffscreenWindow()
49{
50	if (GetDrawingEngine())
51		GetDrawingEngine()->SetHWInterface(NULL);
52
53	if (fHWInterface.IsSet()) {
54		fHWInterface->LockExclusiveAccess();
55		fHWInterface->Shutdown();
56		fHWInterface->UnlockExclusiveAccess();
57	}
58}
59
60