<?xml version="1.0" encoding="UTF-8"?>
<protocol name="ivi_application">

  <copyright>
    Copyright (C) 2013 DENSO CORPORATION
    Copyright (c) 2013 BMW Car IT GmbH

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of this software and associated documentation files (the "Software"),
    to deal in the Software without restriction, including without limitation
    the rights to use, copy, modify, merge, publish, distribute, sublicense,
    and/or sell copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice (including the next
    paragraph) shall be included in all copies or substantial portions of the
    Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    DEALINGS IN THE SOFTWARE.
  </copyright>

  <interface name="ivi_surface" version="1">
    <description summary="application interface to surface in ivi compositor"/>

    <request name="destroy" type="destructor">
      <description summary="destroy ivi_surface">
        This removes link from ivi_id to wl_surface and destroys ivi_surface.
        The ID, ivi_id, is free and can be used for surface_create again.
      </description>
    </request>

    <event name="configure">
      <description summary="suggest resize">
        The configure event asks the client to resize its surface.

        The size is a hint, in the sense that the client is free to
        ignore it if it doesn't resize, pick a smaller size (to
        satisfy aspect ratio or resize in steps of NxM pixels).

        The client is free to dismiss all but the last configure
        event it received.

        The width and height arguments specify the size of the window
        in surface-local coordinates.
      </description>
      <arg name="width" type="int"/>
      <arg name="height" type="int"/>
    </event>
  </interface>

  <interface name="ivi_application" version="1">
    <description summary="create ivi-style surfaces">
      This interface is exposed as a global singleton.
      This interface is implemented by servers that provide IVI-style user interfaces.
      It allows clients to associate a ivi_surface with wl_surface.
    </description>

    <enum name="error">
      <entry name="role" value="0" summary="given wl_surface has another role"/>
      <entry name="ivi_id" value="1" summary="given ivi_id is assigned to another wl_surface"/>
    </enum>

    <request name="surface_create">
      <description summary="create ivi_surface with numeric ID in ivi compositor">
        This request gives the wl_surface the role of an IVI Surface. Creating more than
        one ivi_surface for a wl_surface is not allowed. Note, that this still allows the
        following example:

         1. create a wl_surface
         2. create ivi_surface for the wl_surface
         3. destroy the ivi_surface
         4. create ivi_surface for the wl_surface (with the same or another ivi_id as before)

        surface_create will create a interface:ivi_surface with numeric ID; ivi_id in
        ivi compositor. These ivi_ids are defined as unique in the system to identify
        it inside of ivi compositor. The ivi compositor implements business logic how to
        set properties of the surface with ivi_id according to status of the system.
        E.g. a unique ID for Car Navigation application is used for implementing special
        logic of the application about where it shall be located.
        The server regards following cases as protocol errors and disconnects the client.
         - wl_surface already has an nother role.
         - ivi_id is already assigned to an another wl_surface.

        If client destroys ivi_surface or wl_surface which is assigne to the ivi_surface,
        ivi_id which is assigned to the ivi_surface is free for reuse.
      </description>
      <arg name="ivi_id" type="uint"/>
      <arg name="surface" type="object" interface="wl_surface"/>
      <arg name="id" type="new_id" interface="ivi_surface"/>
    </request>

  </interface>

</protocol>
