[PATCH weston-ivi-shell 02/15] ivi application protocol:

Nobuhiko Tanibata nobuhiko_tanibata at xddp.denso.co.jp
Thu Mar 6 17:07:35 PST 2014


2014-03-07 00:21 に Jason Ekstrand さんは書きました:
> On Mar 6, 2014 3:53 AM, "Nobuhiko Tanibata"
> <NOBUHIKO_TANIBATA at xddp.denso.co.jp> wrote:
>  >
>  > Add interface ivi_application, which creates ivi_surface objects
> tied
>  > to a given wl_surface with a given id. The given id can be used in
> a
>  > shell to identify which application is assigned to a wl_surface and
>  > layout the surface wherever the shell wants. ivi_surface objects
> can
>  > be used to receive status of wl_surface in the scenegraph of the
>  > compositor.
> 
> In general, I think this looks pretty good.  It's nice and simple and
> only adds what's needed for clients.  I do have a couple comments
> below.
>  --Jason Ekstrand
> 
>> 
>  > Signed-off-by: Nobuhiko Tanibata
> <NOBUHIKO_TANIBATA at xddp.denso.co.jp>
>  > ---
>  >  protocol/ivi-application.xml | 88
> ++++++++++++++++++++++++++++++++++++++++++++
>  >  1 file changed, 88 insertions(+)
>  >  create mode 100644 protocol/ivi-application.xml
>  >
>  > diff --git a/protocol/ivi-application.xml
> b/protocol/ivi-application.xml
>  > new file mode 100644
>  > index 0000000..e58ad26
>  > --- /dev/null
>  > +++ b/protocol/ivi-application.xml
>  > @@ -0,0 +1,88 @@
>  > +<?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 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"/>
>  > +        </request>
>  > +
>  > +        <event name="visibility">
>  > +            <description summary="visibility of surface in
> ivi compositor has changed">
>  > +                The new visibility state is provided in
> argument visibility.
>  > +                If visibility is 0, the surface has become
> invisible.
>  > +                If visibility is not 0, the surface has
> become visible.
>  > +            </description>
>  > +            <arg name="visibility" type="int"/>
>  > +        </event>
>  > +
>  > +    </interface>
>  > +
>  > +    <interface name="ivi_application" version="1">
>  > +        <description summary="interface for ivi applications
> to use ivi compositor features"/>
>  > +
>  > +        <request name="surface_create">
>  > +            <description summary="create surface in ivi
> compositor">
>  > +                surface_create will create a new surface
> with surface_id in ivi compositor,
>  > +                if it does not yet exists. If the surface
> with surface_id already exists in
>  > +                ivi compositor, the application content
> provided in argument surface will
>  > +                be used as surface content. If an other
> ivi application already registered
>  > +                content for surface with surface_id, an
> error event will indicate the problem.
>  > +            </description>
>  > +            <arg name="id_surface" type="uint"/>
>  > +            <arg name="surface" type="object"
> interface="wl_surface"/>
>  > +            <arg name="id" type="new_id"
> interface="ivi_surface"/>
>  > +        </request>
>  > +
>  > +        <enum name="error_code">
>  > +            <description summary="possible error codes
> returned by ivi compositor">
>  > +                These error codes define all possible
> error codes returned by ivi compositor
>  > +                on server-side errors.
>  > +            </description>
>  > +            <entry name="unknown_error"   value="1"
> summary="unknown error encountered"/>
> 
> What kinds of things do you use "unknown error" for?  I'm not sure
> how that's useful to the client.
> 

Hi Jason,

Thank you for reviewing.

I see. From this review point, it shall not return no useful value to 
the client.
I break down more here.
- id in use: specified ID for ivi_surface is already used by itself or 
other client.
- resource in use: specified ID of wl_surface is already tie to another 
ID of ivi_surface.
- invalid resource: specified ID of wl_surface is not valid in server.

I think these three is sufficient for client.

>> +            <entry name="resource_in_use" value="2"
> summary="resource is in use and can not be shared"/>
> 
> What kind of resource does this refer to?  It looks like you use it
> if someone tries to call surface_create twice on the same surface, but
> you don't specify.
> 
>> +        </enum>
>  > +
>  > +        <event name="error">
>  > +            <description summary="server-side error
> detected">
>  > +                The ivi compositor encountered error while
> processing a request by this
>  > +                application. The error is defined by
> argument error_code and optional
>  > +                error_text.
>  > +                If the application requires to associate
> this error event to a request,
>  > +                it can
>  > +                    1. send request
>  > +                    2. force display roundtrip
>  > +                    3. check, if error event was
> received
>  > +                 but this restricts the application to
> have only one open request at a time.
>  > +            </description>
>  > +            <arg name="error_code" type="int"/>
>  > +            <arg name="error_text" type="string"
> allow-null="true"/>
>  > +        </event>
> 
> Why are you using this rather than the built-in wl_display.error? 
> The built-in wl_display.error also terminates the client when an error
> is sent.  Under what error conditions would you want the client to
> continue?
> 

Good suggestion!
According to wayland.xml, error code from 0 to 2 is reserved for global.
Please teach me there is any manner which number I can use for the above 
object? In the feature, if wayland.xml updated to add new global error 
code to 3, the local number may need to be incremented.

BR,
Nobuhiko
>> +
>  > +    </interface>
>  > +
>  > +</protocol>
>  > --
>  > 1.8.3.1
>  >
>  > _______________________________________________
>  > wayland-devel mailing list
>  > wayland-devel at lists.freedesktop.org
>  > http://lists.freedesktop.org/mailman/listinfo/wayland-devel [1]
> 
> 
> Links:
> ------
> [1] http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list