Before you can render an animation or display video, you must create a window for
your application. There are a number of different window types. The following procedure
describes how to create a window that can be used to display video.
To create a window:
-
Create a variable for the context and window instances and create a variable to
store the name of the windowgroup.
screen_context_t screen_context = 0;
screen_window_t screen_window = 0;
static const char *window_group_name = "mainwindowgroup";
-
Create a context. The context describes the relationship between the application
and the underlying windowing system.
screen_create_context(&screen_context, SCREEN_APPLICATION_CONTEXT);
-
Create a window. The screen_create_window() function takes
the window variable and the context variable that you created in the first
step.
screen_create_window(&screen_window, screen_context);
-
Create a window group. The window_group_name variable stores
the name of the main window group. Remember that the name of the window group must be unique.
You must add your application window to a window group in order to make the window visible.
screen_create_window_group(screen_window, window_group_name);
-
Set the window properties. In the following step, the pixel format and usage
values are set for the window. In this example, the window will be used to
display a video.
int format = SCREEN_FORMAT_RGBA8888;
screen_set_window_property_iv(screen_window, SCREEN_PROPERTY_FORMAT, &format);
int usage = SCREEN_USAGE_NATIVE;
screen_set_window_property_iv(screen_window, SCREEN_PROPERTY_USAGE, &usage);
-
Create a window buffer. In this example, the buffer is used to store video data
for the window. The screen_create_window_buffers() function
takes the window and an integer that defines the number of buffers to create for
this window.
screen_create_window_buffers(screen_window, 1);
Although any instances created are destroyed when the
application exits, it is best practice to destroy any window,
pixmap and context instances that you created but no longer
require.
The following code snippet is included at the end of the application above.
screen_destroy_window(screen_window);
screen_destroy_context(screen_context);