Ejemplo n.º 1
0
int
main(int argc, char *argv[])
{
	display = wl_display_create();

	if (!display)
		return EXIT_FAILURE;

	if (wl_display_add_socket(display, NULL) != 0)
		return EXIT_FAILURE;

	if (!swc_initialize(display, NULL, &manager))
		return EXIT_FAILURE;

	swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_Return,
	                &spawn, terminal_command);
	swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_r,
	                &spawn, dmenu_command);
	swc_add_binding(SWC_BINDING_KEY, SWC_MOD_LOGO, XKB_KEY_q,
	                &quit, NULL);

	event_loop = wl_display_get_event_loop(display);
	wl_display_run(display);
	wl_display_destroy(display);

	return EXIT_SUCCESS;
}
Ejemplo n.º 2
0
WLC_API void
wlc_run(void)
{
   if (!wlc.display)
      return;

   wlc.compositor.state.ready = false;

   bool emit_ready = true;
   const char *xwayland = getenv("WLC_XWAYLAND");
   if (!xwayland || !chck_cstreq(xwayland, "0"))
      emit_ready = !wlc_xwayland_init();

   // Emit ready immediately when no Xwayland
   if (emit_ready) {
      WLC_INTERFACE_EMIT(compositor.ready);
      wlc.compositor.state.ready = true;
   }

   wlc_set_active(true);

   if (wlc_compositor_is_good(&wlc.compositor))
      wl_display_run(wlc.display);

   wlc_cleanup();
}
Ejemplo n.º 3
0
void* noia_wayland_engine_run(void* data)
{
    noia_environment_on_enter_new_thread(0, "noia:wayland");

    LOG_INFO1("Threads: Wayland thread started");
    NoiaWaylandEngine* engine = (NoiaWaylandEngine*) data;
    wl_display_run(engine->display);
    return NULL;
}
Ejemplo n.º 4
0
Archivo: wlc.c Proyecto: UIKit0/wlc
WLC_API void
wlc_run(void)
{
   if (!wlc.display)
      return;

   // Called when no xwayland is requested
   if (wlc.set_ready_on_run) {
      WLC_INTERFACE_EMIT(compositor.ready);
      wlc.set_ready_on_run = false;
   }

   wl_display_run(wlc.display);
   wlc_cleanup();
}
Ejemplo n.º 5
0
int main(int argc, char **argv)
{
    if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) {
        fmt::print("Could not lock memory pages.\n");
    } else {
        fmt::print(stderr, "Succesfully locked memory pages.\n");
    }

    sched_param schedParam;
    memset(&schedParam, 0, sizeof(schedParam));
    schedParam.sched_priority = 10;
    if (sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK, &schedParam) != -1) {
        fmt::print("Succesfully changed the process scheduler to SCHED_FIFO.\n");
    } else {
        fmt::print(stderr, "Could not change the process scheduler: {}.\n", strerror(errno));
    }

    setenv("QT_MESSAGE_PATTERN", "[%{if-debug}D%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif} %{appname}"
                                 " - %{file}:%{line}] == %{message}", 0);

    QCoreApplication app(argc, argv);
    app.setApplicationName(QStringLiteral("Orbital"));
    app.setApplicationVersion(QStringLiteral("0.1"));

    QCommandLineParser parser;
    parser.setApplicationDescription(QStringLiteral("Orbital compositor"));
    parser.addHelpOption();
    parser.addVersionOption();

    QCommandLineOption socketOption({ QStringLiteral("S"), QStringLiteral("socket") }, QStringLiteral("Socket name"));
    parser.addOption(socketOption);

    QCommandLineOption backendOption({ QStringLiteral("B"), QStringLiteral("backend") }, QStringLiteral("Backend plugin"), QStringLiteral("name"));
    parser.addOption(backendOption);

    parser.process(app);

    Orbital::StringView backendKey;
    QByteArray opt;
    if (parser.isSet(backendOption)) {
        opt = parser.value(backendOption).toUtf8();
        backendKey = opt;
    } else if (getenv("WAYLAND_DISPLAY")) {
        backendKey = "wayland-backend";
    } else if (getenv("DISPLAY")) {
        backendKey = "x11-backend";
    } else {
        backendKey = "drm-backend";
    }

    Orbital::BackendFactory::searchPlugins();
    Orbital::Backend *backend = Orbital::BackendFactory::createBackend(backendKey);
    if (!backend) {
        return 1;
    }

    Orbital::Compositor compositor(backend);
    if (!compositor.init("")) {
        return 1;
    }

    wl_display_run(compositor.display());
    return 0;
}