blob: da8826af75ede361ff8ee1ea43c920ba44d1f9ad [file] [log] [blame]
rsesek5c7c3e92016-01-05 03:37:111// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_GFX_MAC_IO_SURFACE_H_
6#define UI_GFX_MAC_IO_SURFACE_H_
7
8#include <IOSurface/IOSurface.h>
9#include <mach/mach.h>
10
11#include "base/mac/scoped_cftyperef.h"
12#include "ui/gfx/buffer_types.h"
Sunny Sachanandani88353d22017-10-26 01:52:2413#include "ui/gfx/color_space.h"
rsesek5c7c3e92016-01-05 03:37:1114#include "ui/gfx/generic_shared_memory_id.h"
15#include "ui/gfx/geometry/size.h"
16#include "ui/gfx/gfx_export.h"
17
18namespace gfx {
19
20namespace internal {
21
22struct IOSurfaceMachPortTraits {
23 GFX_EXPORT static mach_port_t InvalidValue() { return MACH_PORT_NULL; }
24 GFX_EXPORT static mach_port_t Retain(mach_port_t);
25 GFX_EXPORT static void Release(mach_port_t);
26};
27
ccameron69a2dae2016-03-28 03:23:4528struct ScopedInUseIOSurfaceTraits {
29 static IOSurfaceRef InvalidValue() { return nullptr; }
30 static IOSurfaceRef Retain(IOSurfaceRef io_surface) {
31 CFRetain(io_surface);
32 IOSurfaceIncrementUseCount(io_surface);
33 return io_surface;
34 }
35 static void Release(IOSurfaceRef io_surface) {
36 IOSurfaceDecrementUseCount(io_surface);
37 CFRelease(io_surface);
38 }
39};