[PATCH weston-ivi-shell 02/15] ivi application protocol:
Nobuhiko Tanibata
nobuhiko_tanibata at xddp.denso.co.jp
Thu Mar 6 23:49:28 PST 2014
2014-03-07 11:37 に Jason Ekstrand さんは書きました:
> On Mar 6, 2014 7:08 PM, "Nobuhiko Tanibata"
> <nobuhiko_tanibata at xddp.denso.co.jp> wrote:
> >
> > 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.
>
> The wl_display.error event is a bit confusing. The
> wl_resource_post_error function takes three arguments. The first
> argument is an object; the last two are an error code and a
> human-readable message string. The error code should be interpreted
> relative to the given object. Therefore, you don't need to worry about
> colliding with the codes defined in wl_display. If the error is
> defined in wl_application you should pass the wl_application resource
> into the error event.
>
> One warning about wl_display.error event: all errors are considered
> fatal and the client gets automatically disconnected. Given the errors
> you listed, this is probably OK. If you want a non-fatal error, you
I see. Thank you. In its usecase, a ivi_application will create several
ivi_surfaces. If it is disconnected, all ivi_surfaces are destroyed and
it will not fit the use case.
So I will consider it to be changed to naming "warning" as event in V2.
Thanks,
Nobuhiko
> should use something else And probably not call it "error" (to avoid
> confusion).
>
> Hope that helps,
> --Jason Ekstrand
>
>>
> > 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]
> [1]
> >>
> >>
> >> Links:
> >> ------
> >> [1] 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