static struct session * create_session (void) { struct session *session; char argv[1][1]; session = malloc (sizeof *session); session->properties = ua_ui_session_properties_new (); ua_ui_session_properties_set_type (session->properties, U_SYSTEM_SESSION); session->session = ua_ui_session_new_with_properties (session->properties); if (!session->session) GST_WARNING ("Failed to start new Ubuntu Application API session"); session->app_description = u_application_description_new (); session->app_lifecycle_delegate = u_application_lifecycle_delegate_new (); /* No context data to pass to the lifecycle delegate for now */ u_application_lifecycle_delegate_set_context (session->app_lifecycle_delegate, NULL); u_application_description_set_application_lifecycle_delegate (session->app_description, session->app_lifecycle_delegate); /* The UA requires a command line option set, so give it a fake argv array */ argv[0][0] = '\n'; session->app_options = u_application_options_new_from_cmd_line (1, (char **) argv); session->app_instance = u_application_instance_new_from_description_with_options (session->app_description, session->app_options); if (!session->app_instance) GST_WARNING ("Failed to start a new Ubuntu Application API instance"); return session; }
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(); } }
QMirClientClientIntegration::QMirClientClientIntegration() : QPlatformIntegration() , mNativeInterface(new QMirClientNativeInterface) , mFontDb(new QGenericUnixFontDatabase) , mServices(new QMirClientPlatformServices) , mClipboard(new QMirClientClipboard) , mScaleFactor(1.0) { setupOptions(); setupDescription(); // Create new application instance mInstance = u_application_instance_new_from_description_with_options(mDesc, mOptions); if (mInstance == nullptr) qFatal("QMirClientClientIntegration: connection to Mir server failed. Check that a Mir server is\n" "running, and the correct socket is being used and is accessible. The shell may have\n" "rejected the incoming connection, so check its log file"); mNativeInterface->setMirConnection(u_application_instance_get_mir_connection(mInstance)); // Create default screen. mScreen = new QMirClientScreen(u_application_instance_get_mir_connection(mInstance)); screenAdded(mScreen); // Initialize input. if (qEnvironmentVariableIsEmpty("QTUBUNTU_NO_INPUT")) { mInput = new QMirClientInput(this); mInputContext = QPlatformInputContextFactory::create(); } else { mInput = nullptr; mInputContext = nullptr; } // compute the scale factor const int defaultGridUnit = 8; int gridUnit = defaultGridUnit; QByteArray gridUnitString = qgetenv("GRID_UNIT_PX"); if (!gridUnitString.isEmpty()) { bool ok; gridUnit = gridUnitString.toInt(&ok); if (!ok) { gridUnit = defaultGridUnit; } } mScaleFactor = static_cast<qreal>(gridUnit) / defaultGridUnit; }