static int init_wscreensaver(struct wscreensaver *wscr, struct display *display) { int size; const char prefix[] = "wscreensaver::"; char *str; display_set_user_data(display, wscr); wscr->display = display; wscr->plugin = plugins[0]; size = sizeof(prefix) + strlen(wscr->plugin->name); str = malloc(size); if (!str) { fprintf(stderr, "init: out of memory\n"); return -1; } snprintf(str, size, "%s%s", prefix, wscr->plugin->name); progname = str; wscr->egl.display = display_get_egl_display(wscr->display); if (!wscr->egl.display) { fprintf(stderr, "init: no EGL display\n"); return -1; } eglBindAPI(EGL_OPENGL_API); wscr->egl.config = display_get_argb_egl_config(wscr->display); if (demo_mode) { struct wl_output *o = output_get_wl_output(display_get_output(display)); /* only one instance */ wscr->demomode = create_wscreensaver_instance(wscr, o, 400, 300); return 0; } display_set_output_configure_handler(display, handle_output_configure); return 0; }
int main(int argc, char *argv[]) { struct virtual_keyboard virtual_keyboard; virtual_keyboard.display = display_create(argc, argv); if (virtual_keyboard.display == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } virtual_keyboard.context = NULL; virtual_keyboard.preedit_string = NULL; display_set_user_data(virtual_keyboard.display, &virtual_keyboard); display_set_global_handler(virtual_keyboard.display, global_handler); display_set_output_configure_handler(virtual_keyboard.display, handle_output_configure); display_run(virtual_keyboard.display); return 0; }
int main(int argc, char *argv[]) { struct fullscreen fullscreen; struct display *d; int i; fullscreen.width = 640; fullscreen.height = 480; fullscreen.fullscreen = 0; fullscreen.present_method = _WL_FULLSCREEN_SHELL_PRESENT_METHOD_DEFAULT; wl_list_init(&fullscreen.output_list); fullscreen.current_output = NULL; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-w") == 0) { if (++i >= argc) usage(EXIT_FAILURE); fullscreen.width = atol(argv[i]); } else if (strcmp(argv[i], "-h") == 0) { if (++i >= argc) usage(EXIT_FAILURE); fullscreen.height = atol(argv[i]); } else if (strcmp(argv[i], "--help") == 0) usage(EXIT_SUCCESS); else usage(EXIT_FAILURE); } d = display_create(&argc, argv); if (d == NULL) { fprintf(stderr, "failed to create display: %m\n"); return -1; } fullscreen.display = d; fullscreen.fshell = NULL; display_set_user_data(fullscreen.display, &fullscreen); display_set_global_handler(fullscreen.display, global_handler); display_set_output_configure_handler(fullscreen.display, output_handler); if (fullscreen.fshell) { fullscreen.window = window_create_custom(d); _wl_fullscreen_shell_present_surface(fullscreen.fshell, window_get_wl_surface(fullscreen.window), fullscreen.present_method, NULL); /* If we get the CURSOR_PLANE capability, we'll change this */ fullscreen.draw_cursor = 1; } else { fullscreen.window = window_create(d); fullscreen.draw_cursor = 0; } fullscreen.widget = window_add_widget(fullscreen.window, &fullscreen); window_set_title(fullscreen.window, "Fullscreen"); widget_set_transparent(fullscreen.widget, 0); widget_set_default_cursor(fullscreen.widget, CURSOR_LEFT_PTR); widget_set_redraw_handler(fullscreen.widget, redraw_handler); widget_set_button_handler(fullscreen.widget, button_handler); widget_set_motion_handler(fullscreen.widget, motion_handler); widget_set_enter_handler(fullscreen.widget, enter_handler); widget_set_touch_down_handler(fullscreen.widget, touch_handler); window_set_key_handler(fullscreen.window, key_handler); window_set_fullscreen_handler(fullscreen.window, fullscreen_handler); window_set_user_data(fullscreen.window, &fullscreen); /* Hack to set minimum allocation so we can shrink later */ window_schedule_resize(fullscreen.window, 1, 1); window_schedule_resize(fullscreen.window, fullscreen.width, fullscreen.height); display_run(d); return 0; }