gfx/webrender_bindings/RenderMacIOSurfaceTextureHostOGL.h
author Mike Hommey <mh+mozilla@glandium.org>
Thu, 28 Sep 2017 08:46:43 +0900
changeset 384593 d6dc8ba8b0762681e7c0ed4005ca5a194d48b325
parent 364127 da0f884500fe9ee26ed12e2ca585cf7e9833462a
child 389027 5f74d262924171a8fa0b4483a64f4cac34c4c9b8
child 389104 40ec5550739449f1cb8ad7d030a40cc10f9653bc
permissions -rw-r--r--
Bug 1403366 - Don't use nsDirectoryService::Create in nsDirectoryService::GetCurrentProcessDirectory. r=froydnj Back in the day, there was no global with an already initialized DirectoryService. But now there is, and, in fact, GetCurrentProcessDirectory already errors out if that global is not set by the time it's called. All calling nsDirectoryService::Create achieves is doing the check again and calling QueryInterface, which we don't need to do anyways.

/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef MOZILLA_GFX_RENDERMACIOSURFACETEXTUREHOSTOGL_H
#define MOZILLA_GFX_RENDERMACIOSURFACETEXTUREHOSTOGL_H

#include "mozilla/gfx/MacIOSurface.h"
#include "mozilla/layers/TextureHostOGL.h"
#include "RenderTextureHostOGL.h"

namespace mozilla {

namespace layers {
class SurfaceDescriptorMacIOSurface;
}

namespace wr {

class RenderMacIOSurfaceTextureHostOGL final : public RenderTextureHostOGL
{
public:
  explicit RenderMacIOSurfaceTextureHostOGL(MacIOSurface* aSurface);

  virtual bool Lock() override;
  virtual void Unlock() override;

  virtual void SetGLContext(gl::GLContext* aContext) override;

  virtual gfx::IntSize GetSize(uint8_t aChannelIndex) const override;
  virtual GLuint GetGLHandle(uint8_t aChannelIndex) const override;

private:
  virtual ~RenderMacIOSurfaceTextureHostOGL();
  void DeleteTextureHandle();

  RefPtr<MacIOSurface> mSurface;
  RefPtr<gl::GLContext> mGL;
  GLuint mTextureHandles[3];
};

} // namespace wr
} // namespace mozilla

#endif // MOZILLA_GFX_RENDERMACIOSURFACETEXTUREHOSTOGL_H