|typedef void||VdpPreemptionCallback (VdpDevice device, void *context)|
|A callback to notify the client application that a device's display has been preempted. |
|typedef VdpStatus||VdpPreemptionCallbackRegister (VdpDevice device, VdpPreemptionCallback callback, void *context)|
|Configure the display preemption callback. |
The Window System may operate within a frame-work (such as Linux's VT switching) where the display is shared between the Window System (e.g. X) and some other output mechanism (e.g. the VT.) Given this scenario, the Window System's control of the display could be preempted, and restored, at any time.
VDPAU does not mandate that implementations hide such preemptions from VDPAU client applications; doing so may impose extreme burdens upon VDPAU implementations. Equally, however, implementations are free to hide such preemptions from client applications.
VDPAU allows implementations to inform the client application when such a preemption has occurred, and then refuse to continue further operation.
Similarly, some form of fatal hardware error could prevent further operation of the VDPAU implementation, without a complete re-initialization.
The following discusses the behavior of implementations that choose not to hide preemption from client applications.
When preemption occurs, VDPAU internally destroys all objects; the client application need not do this. However, if the client application wishes to continue operation, it must recreate all objects that it uses. It is probable that this recreation will not succeed until the display ownership is restored to the Window System.
Once preemption has occurred, all VDPAU entry points will return the specific error code VDP_STATUS_DISPLAY_PREEMPTED.
VDPAU client applications may also be notified of such preemptions and fatal errors via a callback. See VdpPreemptionCallbackRegister for more details.
A callback to notify the client application that a device's display has been preempted.
|[in]||device||The device that had its display preempted.|
|[in]||context||The client-supplied callback context information.|
|typedef VdpStatus VdpPreemptionCallbackRegister(VdpDevice device, VdpPreemptionCallback callback, void *context)|
Configure the display preemption callback.
|[in]||device||The device to be monitored for preemption.|
|[in]||callback||The client application's callback function. If NULL, the callback is unregistered.|
|[in]||context||The client-supplied callback context information. This information will be passed to the callback function if/when invoked.|