<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - call eglSwapBuffers causes app execution block"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=99332">99332</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>call eglSwapBuffers causes app execution block
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>Wayland
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>minor
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>weston
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>wayland-bugs@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>sergey.stepanov@lge.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Hi all,

if we call eglSwapBuffers twice (or even call glClear in EGL mode) it can
causes app execution block.
I found 2 independent cases:
1. eglSwapBuffers implementation does not request wl_surface.frame callback(as
Mesa do)
2. surface is not mapped in weston

I believe in both cases EGL driver is blocked on waiting wl_buffer.release
event.
I suppose it happens because of the next code 

in function weston_buffer_reference:
wl_resource_queue_event(ref->buffer->resource,                                 
WL_BUFFER_RELEASE);

If there is no other events for the client a message buffer will not be
flushed. So, client will not receive wl_buffer.release event until other event
occurred.
We can implement a workaround by calling display_roundtrip after each
swapBuffers call, but i believe it is not a proper way.

I did not check current version (but I took a look at source code,
implementation is the same) but it is true for 1.6 and 1.9</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>