VirtualDisplay.java revision cc2195bb560cc155bf3e7d3a7f27fe619a497124
1a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown/* 2a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * Copyright (C) 2013 The Android Open Source Project 3a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * 4a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 5a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * you may not use this file except in compliance with the License. 6a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * You may obtain a copy of the License at 7a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * 8a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * http://www.apache.org/licenses/LICENSE-2.0 9a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * 10a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * Unless required by applicable law or agreed to in writing, software 11a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 12a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * See the License for the specific language governing permissions and 14a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * limitations under the License. 15a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown */ 16a506a6ec94863a35acca9feb165db76ddac3892cJeff Brownpackage android.hardware.display; 17a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown 18a506a6ec94863a35acca9feb165db76ddac3892cJeff Brownimport android.os.IBinder; 19a506a6ec94863a35acca9feb165db76ddac3892cJeff Brownimport android.view.Display; 20a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown 21a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown/** 22cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * Represents a virtual display. The content of a virtual display is rendered to a 23cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * {@link android.view.Surface} that you must provide to {@link DisplayManager#createVirtualDisplay 24cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * createVirtualDisplay()}. 25cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * <p>Because a virtual display renders to a surface provided by the application, it will be 26cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * released automatically when the process terminates and all remaining windows on it will 27cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * be forcibly removed. However, you should also explicitly call {@link #release} when you're 28cc2195bb560cc155bf3e7d3a7f27fe619a497124Scott Main * done with it. 29a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * 307d00affce6e25b22fd8fc135933b3bf6b547a0dcJeff Brown * @see DisplayManager#createVirtualDisplay 31a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown */ 32a506a6ec94863a35acca9feb165db76ddac3892cJeff Brownpublic final class VirtualDisplay { 33a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown private final DisplayManagerGlobal mGlobal; 34a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown private final Display mDisplay; 35a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown private IBinder mToken; 36a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown 37a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown VirtualDisplay(DisplayManagerGlobal global, Display display, IBinder token) { 38a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown mGlobal = global; 39a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown mDisplay = display; 40a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown mToken = token; 41a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown } 42a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown 43a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown /** 44a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * Gets the virtual display. 45a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown */ 46a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown public Display getDisplay() { 47a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown return mDisplay; 48a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown } 49a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown 50a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown /** 51a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * Releases the virtual display and destroys its underlying surface. 52a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * <p> 53a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * All remaining windows on the virtual display will be forcibly removed 54a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * as part of releasing the virtual display. 55a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown * </p> 56a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown */ 57a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown public void release() { 58a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown if (mToken != null) { 59a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown mGlobal.releaseVirtualDisplay(mToken); 60a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown mToken = null; 61a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown } 62a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown } 63a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown 64a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown @Override 65a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown public String toString() { 66a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown return "VirtualDisplay{display=" + mDisplay + ", token=" + mToken + "}"; 67a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown } 68a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown} 69