<?xml version="1.0" encoding="UTF-8"?>
<protocol name="libhybris_egl_server_buffer">
    <copyright>
 Copyright (C) 2014 Jolla Ltd
 Contact: http://www.qt.io/licensing/

 This file is part of the plugins of the Qt Toolkit.

 $QT_BEGIN_LICENSE:BSD$
 You may use this file under the terms of the BSD license as follows:

 "Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.
   * Neither the name of The Qt Company Ltd nor the names of its
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.


 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."

 $QT_END_LICENSE$
    </copyright>

  <interface name="qt_libhybris_buffer" version="1">
    <event name="add_fd">
      <arg name="fd" type="fd"/>
    </event>
  </interface>

  <interface name="qt_libhybris_egl_server_buffer" version="1">
  <!-- We depend on wayland-egl to authenticate for us -->
    <enum name="format">
      <entry name="RGBA32" value="0"/>
    </enum>
    <event name="server_buffer_created">
      <arg name="id" type="new_id" interface="qt_libhybris_buffer"/>
      <arg name="qid" type="new_id" interface="qt_server_buffer"/>
      <arg name="num_fds" type="int" />
      <arg name="ints" type="array" summary="an array of int32_t" />
      <arg name="name" type="int"/>
      <arg name="width" type="int"/>
      <arg name="height" type="int"/>
      <arg name="stride" type="int"/>
      <arg name="format" type="int"/>
    </event>
  </interface>
</protocol>

