- return gdk_input_add(gps_data->gps_fd, GDK_INPUT_READ, process_gps, gps_data);
+ GIOChannel *channel = g_io_channel_unix_new(gps_data->gps_fd);
+ gint input_tag = g_io_add_watch(channel, G_IO_IN, process_gps, gps_data);
+ g_io_channel_unref(channel);
+ return input_tag;