| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #pragma once |
| |
| #include <zircon/compiler.h> |
| #include <zircon/types.h> |
| #include <zircon/pixelformat.h> |
| #include <zircon/device/display.h> |
| |
| __BEGIN_CDECLS; |
| |
| /** |
| * protocol/display.h - display protocol definitions |
| */ |
| |
| typedef void (*zx_display_cb_t)(bool acquired, void* cookie); |
| |
| typedef struct display_protocol_ops { |
| // sets the display mode |
| zx_status_t (*set_mode)(void* ctx, zx_display_info_t* info); |
| |
| // gets the display mode |
| zx_status_t (*get_mode)(void* ctx, zx_display_info_t* info); |
| |
| // gets a pointer to the framebuffer |
| zx_status_t (*get_framebuffer)(void* ctx, void** framebuffer); |
| |
| // flushes the framebuffer |
| void (*flush)(void* ctx); |
| |
| // Controls ownership of the display between multiple display clients. |
| // Useful for switching to and from the gfxconsole. |
| // If the framebuffer is visible, release ownership of the display and |
| // allow other clients to scanout buffers. |
| // If the framebuffer is not visible, make it visible and acquire ownership |
| // of the display, preventing other clients from scanning out buffers. |
| // If the display is owned when when a new graphics client is created, |
| // ownership will automatically be released. |
| void (*acquire_or_release_display)(void* ctx, bool acquire); |
| |
| // Registers a callback to be invoked when display ownership changes. |
| // The provided callback will be invoked with a value of true if the display |
| // has been acquired, false if it has been released. |
| void (*set_ownership_change_callback)(void* ctx, zx_display_cb_t callback, void* cookie); |
| } display_protocol_ops_t; |
| |
| typedef struct zx_display_protocol { |
| display_protocol_ops_t* ops; |
| void* ctx; |
| } display_protocol_t; |
| __END_CDECLS; |