main: use uterm_monitor objects

Create a global uterm_monitor object to monitor the system for new seats
and devices.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-05-26 13:02:05 +02:00
parent c8ab4a2c49
commit 4c85801975

View File

@ -45,6 +45,8 @@ struct kmscon_app {
struct uterm_video *video;
struct kmscon_input *input;
struct kmscon_ui *ui;
struct uterm_monitor *mon;
};
static void sig_generic(struct ev_eloop *eloop, struct signalfd_siginfo *info,
@ -80,12 +82,33 @@ static bool vt_switch(struct kmscon_vt *vt,
return true;
}
static void monitor_event(struct uterm_monitor *mon,
struct uterm_monitor_event *ev,
void *data)
{
struct kmscon_app *app = data;
switch (ev->type) {
case UTERM_MONITOR_NEW_SEAT:
break;
case UTERM_MONITOR_FREE_SEAT:
break;
case UTERM_MONITOR_NEW_DEV:
break;
case UTERM_MONITOR_FREE_DEV:
break;
case UTERM_MONITOR_HOTPLUG_DEV:
break;
}
}
static void destroy_app(struct kmscon_app *app)
{
kmscon_ui_free(app->ui);
kmscon_input_unref(app->input);
uterm_video_unref(app->video);
kmscon_vt_unref(app->vt);
uterm_monitor_unref(app->mon);
ev_eloop_unregister_signal_cb(app->eloop, SIGINT, sig_generic, app);
ev_eloop_unregister_signal_cb(app->eloop, SIGTERM, sig_generic, app);
ev_eloop_rm_eloop(app->vt_eloop);
@ -114,6 +137,10 @@ static int setup_app(struct kmscon_app *app)
if (ret)
goto err_app;
ret = uterm_monitor_new(&app->mon, app->eloop, monitor_event, app);
if (ret)
goto err_app;
ret = kmscon_vt_new(&app->vt, vt_switch, app);
if (ret)
goto err_app;
@ -145,6 +172,8 @@ static int setup_app(struct kmscon_app *app)
if (ret)
goto err_app;
uterm_monitor_scan(app->mon);
return 0;
err_app: