WL_EXPORT int module_init(struct weston_compositor *compositor) { struct wl_event_loop *loop; loop = wl_display_get_event_loop(compositor->wl_display); wl_event_loop_add_idle(loop, surface_transform, compositor); return 0; }
WL_EXPORT int module_init(struct weston_compositor *compositor, int *argc, char *argv[]) { struct wl_event_loop *loop; loop = wl_display_get_event_loop(compositor->wl_display); wl_event_loop_add_idle(loop, surface_to_from_global, compositor); return 0; }
void wayfire_core::wake() { wl_event_loop_add_idle(ev_loop, refocus_idle_cb, 0); if (times_wake > 0) { for_each_output([] (wayfire_output *output) { output->emit_signal("wake", nullptr); }); } ++times_wake; }
WL_EXPORT int controller_module_init(struct weston_compositor *compositor, int *argc, char *argv[], const struct ivi_layout_interface *iface, size_t iface_version) { struct wl_event_loop *loop; struct test_launcher *launcher; const char *path; /* strict check, since this is an internal test module */ if (iface_version != sizeof(*iface)) { weston_log("fatal: controller interface mismatch\n"); return -1; } path = getenv("WESTON_BUILD_DIR"); if (!path) { weston_log("test setup failure: WESTON_BUILD_DIR not set\n"); return -1; } launcher = zalloc(sizeof *launcher); if (!launcher) return -1; launcher->compositor = compositor; launcher->layout_interface = iface; snprintf(launcher->exe, sizeof launcher->exe, "%s/ivi-layout.ivi", path); if (wl_global_create(compositor->wl_display, &weston_test_runner_interface, 1, launcher, bind_runner) == NULL) return -1; loop = wl_display_get_event_loop(compositor->wl_display); wl_event_loop_add_idle(loop, idle_launch_client, launcher); return 0; }
int main() { char buffer[64]; //logStream.rdbuf()->pubsetbuf(buffer, sizeof(buffer)); logStream.rdbuf()->pubsetbuf(nullptr, 0); logStream.open("log.txt"); //try { ny::logLogger().stream = &logStream; ny::warningLogger().stream = &logStream; ny::errorLogger().stream = &logStream; ny::sendLog("Started Iro Desktop"); iro::Compositor myCompositor; iro::Seat mySeat(myCompositor); iro::ForkHandler myForkHandler(myCompositor); std::unique_ptr<iro::DBusHandler> myDBusHandler = nullptr; std::unique_ptr<iro::LogindHandler> myLogindHandler = nullptr; std::unique_ptr<iro::DeviceHandler> myDeviceHandler = nullptr; std::unique_ptr<iro::Backend> myBackend = nullptr; std::unique_ptr<iro::TerminalHandler> myTerminalHandler = nullptr; std::unique_ptr<iro::UDevHandler> myUDevHandler = nullptr; std::unique_ptr<iro::InputHandler> myInputHandler = nullptr; if(iro::X11Backend::available()) { iro::X11Backend* xbcknd = new iro::X11Backend(myCompositor, mySeat); myBackend.reset(xbcknd); xbcknd->createOutput(); } else { myDBusHandler.reset(new iro::DBusHandler(myCompositor)); myLogindHandler.reset(new iro::LogindHandler(*myDBusHandler)); myDeviceHandler.reset(new iro::DeviceHandler(*myDBusHandler, *myLogindHandler)); myTerminalHandler.reset(new iro::TerminalHandler(myCompositor)); myBackend.reset(new iro::KmsBackend(myCompositor, *myDeviceHandler)); myUDevHandler.reset(new iro::UDevHandler(myCompositor)); myInputHandler.reset(new iro::InputHandler(myCompositor, mySeat, *myUDevHandler, *myDeviceHandler)); static_cast<iro::KmsBackend*>(myBackend.get())->setCallbacks(*myTerminalHandler); myLogindHandler->onActive([&](bool b) { ny::sendLog("active: ", b); if(b) { myInputHandler->resume(); //myTerminalHandler->activate(myTerminalHandler->number()); //myTerminalHandler->waitActive(myTerminalHandler->number()); } else { myInputHandler->suspend(); } }); std::cout << (int)mySeat.keyboard()->modifiers() << "\n"; std::cout << (int)(iro::Keyboard::Modifier::ctrl | iro::Keyboard::Modifier::alt) << "\n"; if(mySeat.keyboard()) { mySeat.keyboard()->onKey([&](unsigned int key, bool pressed) { if(!pressed) return; if(mySeat.keyboard()->modifiers() != (iro::Keyboard::Modifier::ctrl | iro::Keyboard::Modifier::alt)) return; if(key == KEY_Q) { idleSwitchSource = wl_event_loop_add_idle(&myCompositor.wlEventLoop(), idleSwitch, myTerminalHandler.get()); vtSwitchTo = myTerminalHandler->number() - 1; } else if(key == KEY_E) { idleSwitchSource = wl_event_loop_add_idle(&myCompositor.wlEventLoop(), idleSwitch, myTerminalHandler.get()); vtSwitchTo = myTerminalHandler->number() + 1; } }); } } if(mySeat.keyboard()) { mySeat.keyboard()->onKey([&](unsigned int key, bool pressed) { if(mySeat.keyboard()->modifiers() != iro::Keyboard::Modifier::alt) return; if(pressed && key == KEY_T) { ny::sendLog("starting weston terminal"); myForkHandler.exec("weston-terminal", {"--shell=/bin/bash"}); } }); } ny::sendLog("finished backend setup"); ny::sendLog("set up x window manager"); if(!myBackend) { ny::sendError("no valid backend found"); return 0; } myCompositor.backend(*myBackend); auto* myShell = loadShell("libiro-shell.so"); if(!myShell) { ny::sendError("failed to load shell module"); return 0; } myShell->init(myCompositor, mySeat); myCompositor.shell(*myShell); for(auto* outp : myBackend->outputs()) outp->onDraw(nytl::memberCallback(&iro::ShellModule::render, myShell)); auto xwm = std::make_unique<iro::XWindowManager>(myCompositor, mySeat); ny::sendLog("starting main loop"); myCompositor.run(nytl::seconds(60)); //myCompositor.run(); ny::sendLog("Finished Iro Desktop"); *ny::logLogger().stream << std::flush; } //catch(const std::exception& err) //{ // ny::sendLog("Caught Exception: ", err.what()); //} *ny::logLogger().stream << "iro main extited normally. " << std::flush; return 1; }