graesslin added a comment.

  Ups, sorry for the late review. Somehow it got into my backlog and I forgot 
about it.
  
  The protocol looks good to me. I only have a minor change request there. On 
Server side I would rethink how the buffers are tracked. I think with the 
struct GbmBuffer we are exposing too much implementation detail and maybe even 
getting KWin implementation detail into the public API.

INLINE COMMENTS

> remote-access.xml:19
> +  ]]></copyright>
> +    <interface name="org_kde_kwin_remote_access_manager" version="1">
> +        <description summary="Protocol for managing rendered GBM buffers 
> passing"/>

I noticed that standard Wayland protocols also have a destructor request for 
the manager interface. I'd suggest to also add it (it makes sense as then the 
server can destroy the resource).

> remote-access.xml:33
> +        <description summary="This interface allows finer control of remote 
> buffer lifecycle"/>
> +        <event name="gbm_handle" since="1">
> +            <description summary="This is sent after binding to remote 
> access manager" />

so the idea here would be that if in future we want to support other buffers 
(e.g. shared mem) we just add a new event?

> remote-access.xml:41
> +        </event>
> +        <request name="no_longer_needed" type="destructor" since="1">
> +          <description summary="This request comes once client no longer 
> needs this buffer."/>

Just for thought: in other interfaces the destructor is mostly called "release"

> registry.h:128
>          Idle, ///< Refers to org_kde_kwin_idle_interface interface
> +        RemoteAccessManager, ///< Refers to 
> org_kde_kwin_remote_access_manager interface
>          FakeInput, ///< Refers to org_kde_kwin_fake_input interface

please add as last interface otherwise it breaks API

> registry.h:379
> +     * @see createRemoteAccessManager
> +     * @since 5.7
> +     **/

we moved to frameworks which means we are now at 5.23 - sorry about that. I 
also had to rename a bunch of @since 5.7 ;-)

> remote_access.h:191
> +Q_SIGNALS:
> +    void paramsObtained(qint32 fd, quint32 width, quint32 height, quint32 
> stride, quint32 format);
> +

I would make the arguments getters in the interface and rather have an empty 
signal.

> remote_access_interface.h:46
> + **/
> +struct GbmBuffer
> +{

For ABI compatibility it's better to only have d-ptr-ized classes/structs in 
the public header.

> remote_access_interface.h:49-50
> +    // relevant for server
> +    gbm_surface *surface = nullptr;
> +    gbm_bo *bo = nullptr;
> +    qint32 fd = 0; //< also buffer_id

why do we need gbm_surface and gbm_bo? This looks like adding not needed 
details to the interface

REPOSITORY
  rKWAYLAND KWayland

REVISION DETAIL
  https://phabricator.kde.org/D1231

EMAIL PREFERENCES
  https://phabricator.kde.org/settings/panel/emailpreferences/

To: Kanedias, graesslin
Cc: plasma-devel, sebas
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to