gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:da47f8599321
1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 #include "MacIOSurfaceTextureHostBasic.h"
7 #include "mozilla/layers/BasicCompositor.h"
8 #include "mozilla/gfx/MacIOSurface.h"
9
10 namespace mozilla {
11 namespace layers {
12
13 MacIOSurfaceTextureSourceBasic::MacIOSurfaceTextureSourceBasic(
14 BasicCompositor* aCompositor,
15 MacIOSurface* aSurface)
16 : mCompositor(aCompositor)
17 , mSurface(aSurface)
18 {}
19
20 MacIOSurfaceTextureSourceBasic::~MacIOSurfaceTextureSourceBasic()
21 {
22 }
23
24 gfx::IntSize
25 MacIOSurfaceTextureSourceBasic::GetSize() const
26 {
27 return gfx::IntSize(mSurface->GetDevicePixelWidth(),
28 mSurface->GetDevicePixelHeight());
29 }
30
31 gfx::SurfaceFormat
32 MacIOSurfaceTextureSourceBasic::GetFormat() const
33 {
34 return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8X8;
35 }
36
37 MacIOSurfaceTextureHostBasic::MacIOSurfaceTextureHostBasic(
38 TextureFlags aFlags,
39 const SurfaceDescriptorMacIOSurface& aDescriptor
40 )
41 : TextureHost(aFlags)
42 {
43 mSurface = MacIOSurface::LookupSurface(aDescriptor.surface(),
44 aDescriptor.scaleFactor(),
45 aDescriptor.hasAlpha());
46 }
47
48 gfx::SourceSurface*
49 MacIOSurfaceTextureSourceBasic::GetSurface(gfx::DrawTarget* aTarget)
50 {
51 if (!mSourceSurface) {
52 mSourceSurface = mSurface->GetAsSurface();
53 }
54 return mSourceSurface;
55 }
56
57 void
58 MacIOSurfaceTextureSourceBasic::SetCompositor(Compositor* aCompositor)
59 {
60 mCompositor = static_cast<BasicCompositor*>(aCompositor);
61 }
62
63 bool
64 MacIOSurfaceTextureHostBasic::Lock()
65 {
66 if (!mCompositor) {
67 return false;
68 }
69
70 if (!mTextureSource) {
71 mTextureSource = new MacIOSurfaceTextureSourceBasic(mCompositor, mSurface);
72 }
73 return true;
74 }
75
76 void
77 MacIOSurfaceTextureHostBasic::SetCompositor(Compositor* aCompositor)
78 {
79 BasicCompositor* compositor = static_cast<BasicCompositor*>(aCompositor);
80 mCompositor = compositor;
81 if (mTextureSource) {
82 mTextureSource->SetCompositor(compositor);
83 }
84 }
85
86 gfx::SurfaceFormat
87 MacIOSurfaceTextureHostBasic::GetFormat() const {
88 return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8X8;
89 }
90
91 gfx::IntSize
92 MacIOSurfaceTextureHostBasic::GetSize() const {
93 return gfx::IntSize(mSurface->GetDevicePixelWidth(),
94 mSurface->GetDevicePixelHeight());
95 }
96
97 }
98 }

mercurial