Exemplo n.º 1
0
 shared_ptr shared_instance(Args... args) {
   return shared_ptr(unique_instance(std::forward<Args>(args)...).release());
 }
Exemplo n.º 2
0
int
main(int argc, char **argv)
{
	struct Gtkabber gtkabber;
	gboolean version = FALSE;
	GError *error = NULL;
	UniqueApp *unique_app;
	int i = 1;

	if (!g_thread_supported())
		g_thread_init(NULL);

	memset( &gtkabber, '\0', sizeof( struct Gtkabber ) );

	GOptionEntry cmdline_ops[] = {
		{
			"version",
			'v',
			0,
			G_OPTION_ARG_NONE,
			&version,
			"Print version information",
			NULL
		},
		{ NULL }
	};

	if (!gtk_init_with_args( &argc, &argv, "foo",
				 cmdline_ops,
				 NULL, &(error)))
	{
		g_printerr( "Can't init gtk: %s\n", error->message );
		g_error_free( error );
		return EXIT_FAILURE;
	}

	unique_app = unique_app_new_with_commands( "gtkabber.gtkabber", NULL,
		       "next-socket", COMMAND_PRINT_XID, NULL );
	if( unique_app_is_running( unique_app ))
	{
		unique_instance( argc, argv, unique_app );
		return EXIT_SUCCESS;
	}

	if (version)
	{
		fprintf(stderr, "%s %s\n", "gtkabber ", VERSION);
		return EXIT_SUCCESS;
	}

	setup_toplevel_win( &gtkabber, unique_app );
	for(; i < argc; ++i)
	{
		if (strcmp( argv[i], "next-socket" ) == 0)
			setup_new_socket_for_plug( &gtkabber );
	}
	gtk_main();
	g_object_unref(unique_app);

	return EXIT_SUCCESS;
}