int main(int argc, char** argv)
{
    UApplicationOptions* options = u_application_options_new_from_cmd_line(argc, argv);

    UApplicationDescription* desc = u_application_description_new();
    UApplicationId* id = u_application_id_new_from_stringn("UbuntuApplicationCAPI", 21);
    u_application_description_set_application_id(desc, id);
    UApplicationInstance* instance = u_application_instance_new_from_description_with_options(desc, options);

    UAUiSessionProperties* props = ua_ui_session_properties_new();
    ua_ui_session_properties_set_type(props, U_USER_SESSION);

    UAUiSession* ua_ui_session_new_with_properties(props);

    UAUiDisplay* display = ua_ui_display_new_with_index(0);

    printf("Display resolution: (x,y) = (%d,%d)\n",
           ua_ui_display_query_horizontal_res(display),
           ua_ui_display_query_vertical_res(display));
   
    UAUiWindowProperties* wprops = ua_ui_window_properties_new_for_normal_window();
    ua_ui_window_properties_set_titlen(wprops, "Window 1", 8);
    ua_ui_window_properties_set_role(wprops, U_MAIN_ROLE);
    ua_ui_window_properties_set_input_cb_and_ctx(wprops, on_new_event, NULL);
   
    UAUiWindow* surface = ua_ui_window_new_for_application_with_properties(instance, wprops);
    
    View view(surface);
    while(true)
    {
        view.render();
        view.step();
    }   
}
static void
create_window (GstMirSink * sink, struct display *display, int width,
               int height)
{
    struct window *window;

    /* No need to create a window a second time */
    if (sink->window)
        return;

    g_mutex_lock (&sink->mir_lock);

    window = malloc (sizeof *window);
    window->display = display;
    window->width = width;
    window->height = height;

    window->properties = ua_ui_window_properties_new_for_normal_window ();
    ua_ui_window_properties_set_titlen (window->properties, "MirSinkWindow", 13);

    ua_ui_window_properties_set_role (window->properties, 1);
    ua_ui_window_properties_set_input_cb_and_ctx (window->properties, NULL, NULL);
    GST_DEBUG ("Creating new UA window");
    window->window =
        ua_ui_window_new_for_application_with_properties (sink->session->
                app_instance, window->properties);
    GST_DEBUG ("Setting window geometry");
    window->width = window->display->width;
    window->height = window->display->height;
    GST_DEBUG_OBJECT (sink, "width: %d, height: %d", window->width,
                      window->height);

    if (height != 0 || width != 0)
        ua_ui_window_resize (window->window, window->width, window->height);


    window->egl_native_window = ua_ui_window_get_native_type (window->window);
    sink->window = window;

    g_mutex_unlock (&sink->mir_lock);
}