Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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/. */
6 #include "MacIOSurfaceTextureHostBasic.h"
7 #include "mozilla/layers/BasicCompositor.h"
8 #include "mozilla/gfx/MacIOSurface.h"
10 namespace mozilla {
11 namespace layers {
13 MacIOSurfaceTextureSourceBasic::MacIOSurfaceTextureSourceBasic(
14 BasicCompositor* aCompositor,
15 MacIOSurface* aSurface)
16 : mCompositor(aCompositor)
17 , mSurface(aSurface)
18 {}
20 MacIOSurfaceTextureSourceBasic::~MacIOSurfaceTextureSourceBasic()
21 {
22 }
24 gfx::IntSize
25 MacIOSurfaceTextureSourceBasic::GetSize() const
26 {
27 return gfx::IntSize(mSurface->GetDevicePixelWidth(),
28 mSurface->GetDevicePixelHeight());
29 }
31 gfx::SurfaceFormat
32 MacIOSurfaceTextureSourceBasic::GetFormat() const
33 {
34 return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8X8;
35 }
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 }
48 gfx::SourceSurface*
49 MacIOSurfaceTextureSourceBasic::GetSurface(gfx::DrawTarget* aTarget)
50 {
51 if (!mSourceSurface) {
52 mSourceSurface = mSurface->GetAsSurface();
53 }
54 return mSourceSurface;
55 }
57 void
58 MacIOSurfaceTextureSourceBasic::SetCompositor(Compositor* aCompositor)
59 {
60 mCompositor = static_cast<BasicCompositor*>(aCompositor);
61 }
63 bool
64 MacIOSurfaceTextureHostBasic::Lock()
65 {
66 if (!mCompositor) {
67 return false;
68 }
70 if (!mTextureSource) {
71 mTextureSource = new MacIOSurfaceTextureSourceBasic(mCompositor, mSurface);
72 }
73 return true;
74 }
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 }
86 gfx::SurfaceFormat
87 MacIOSurfaceTextureHostBasic::GetFormat() const {
88 return mSurface->HasAlpha() ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8X8;
89 }
91 gfx::IntSize
92 MacIOSurfaceTextureHostBasic::GetSize() const {
93 return gfx::IntSize(mSurface->GetDevicePixelWidth(),
94 mSurface->GetDevicePixelHeight());
95 }
97 }
98 }