blob: 8430973c79d3573ab9514c4f01eafaaca45435ea [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.display;
import android.view.DisplayInfo;
/**
* Display manager local system service interface.
*
* @hide Only for use within the system server.
*/
public abstract class DisplayManagerInternal {
/**
* Called by the power manager to blank all displays.
*/
public abstract void blankAllDisplaysFromPowerManager();
/**
* Called by the power manager to unblank all displays.
*/
public abstract void unblankAllDisplaysFromPowerManager();
/**
* Returns information about the specified logical display.
*
* @param displayId The logical display id.
* @return The logical display info, or null if the display does not exist. The
* returned object must be treated as immutable.
*/
public abstract DisplayInfo getDisplayInfo(int displayId);
/**
* Registers a display transaction listener to provide the client a chance to
* update its surfaces within the same transaction as any display layout updates.
*
* @param listener The listener to register.
*/
public abstract void registerDisplayTransactionListener(DisplayTransactionListener listener);
/**
* Unregisters a display transaction listener to provide the client a chance to
* update its surfaces within the same transaction as any display layout updates.
*
* @param listener The listener to unregister.
*/
public abstract void unregisterDisplayTransactionListener(DisplayTransactionListener listener);
/**
* Overrides the display information of a particular logical display.
* This is used by the window manager to control the size and characteristics
* of the default display. It is expected to apply the requested change
* to the display information synchronously so that applications will immediately
* observe the new state.
*
* NOTE: This method must be the only entry point by which the window manager
* influences the logical configuration of displays.
*
* @param displayId The logical display id.
* @param info The new data to be stored.
*/
public abstract void setDisplayInfoOverrideFromWindowManager(
int displayId, DisplayInfo info);
/**
* Called by the window manager to perform traversals while holding a
* surface flinger transaction.
*/
public abstract void performTraversalInTransactionFromWindowManager();
/**
* Tells the display manager whether there is interesting unique content on the
* specified logical display. This is used to control automatic mirroring.
* <p>
* If the display has unique content, then the display manager arranges for it
* to be presented on a physical display if appropriate. Otherwise, the display manager
* may choose to make the physical display mirror some other logical display.
* </p>
*
* @param displayId The logical display id to update.
* @param hasContent True if the logical display has content.
* @param inTraversal True if called from WindowManagerService during a window traversal
* prior to call to performTraversalInTransactionFromWindowManager.
*/
public abstract void setDisplayHasContent(int displayId, boolean hasContent,
boolean inTraversal);
/**
* Called within a Surface transaction whenever the size or orientation of a
* display may have changed. Provides an opportunity for the client to
* update the position of its surfaces as part of the same transaction.
*/
public interface DisplayTransactionListener {
void onDisplayTransaction();
}
}