screen_post_stream()

Make a stream frame available to its consumers

Synopsis:

#include <screen/screen.h>
int screen_post_stream(screen_stream_t stream,
                       screen_buffer_t buf,
                       int count,
                       const int *dirty_rects,
                       int flags)

Arguments:

stream
The handle for the stream.
buf
The rendering buffer of the stream that need to be made available to consumers.
count
The number of rectangles provided in the dirty_rects argument, or 0 to indicate that the entire buffer is dirty.
dirty_rects
An array of integers {x,y,w,h} containing the x and y coordinates, width, and height of a rectangle respectively, that bounds the area of the rendering buffer that has changed since the last posting of the window. The dirty_rects argument must provide at least count * 4 integers. You can also pass NULL if you are passing 0 for the count argument.
flags
The indication of how you want this function to behave. Valid values for this parameter are:
  • SCREEN_WAIT_IDLE: When you use SCREEN_WAIT_IDLE, this function returns only when buf (the buffer being posted) has been released or has become a render buffer again.
  • 0: When you use 0, this function returns immediately if there is at least one render buffer available.

Library:

libscreen

Description:

Function Type: Apply Execution

In addition to the area(s) defined by dirty_rects, consumers may use all the pixels in the buffer. Consumers may also retrieve data from the buffer at times other than when screen_post_stream() is called.

The function may cause the SCREEN_PROPERTY_RENDER_BUFFERS of the stream to change. Avoid having other threads in the application read this property while one thread is running screen_post_stream() on the same stream. If this happens, the property may reflect out-of-date information that can lead to artifacts.

Returns:

0 if the area of the rendering buffer that is marked dirty has been updated and a new set of rendering buffers was returned, or -1 if an error occurred (errno is set; refer to errno.h for more details).