gfx/layers/basic/MacIOSurfaceTextureHostBasic.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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 }

mercurial