Exemplo n.º 1
0
bool graph3d_gtk::screen_create(void)
{ 
  /* Attribute list for gtkglarea widget. Specifies a
     list of Boolean attributes and enum/integer
     attribute/value pairs. The last attribute must be
     GDK_GL_NONE. See glXChooseVisual manpage for further
     explanation.
  */
  int attrlist[] = {
    GDK_GL_RGBA,
    GDK_GL_RED_SIZE,1,
    GDK_GL_GREEN_SIZE,1,
    GDK_GL_BLUE_SIZE,1,
    GDK_GL_DOUBLEBUFFER,
    GDK_GL_NONE
  };

  /* Check if OpenGL is supported. */
  if(gdk_gl_query() == FALSE) {
    PERROR(FALSE, "OpenGL is not supported!");
    return(FALSE);
  }
  
  assert(p_area == NULL);
  
  /* Create new OpenGL widget. */
  p_area = GTK_WIDGET(gtk_gl_area_new(attrlist));
  if(!p_area) {
    PERROR(true, "gtk_gl_area_new failed!");
  }  
  gtk_widget_set_size_request(GTK_WIDGET(p_area), graphics_width, graphics_height);
    
  screen_resize(graphics_width, graphics_height);
  return(TRUE);
}
Exemplo n.º 2
0
native_handle _chisel_native_openglview_create( ) {
#ifndef _WIN32
	int attrlist[] = {
		GDK_GL_RGBA,
		GDK_GL_RED_SIZE,1,
		GDK_GL_GREEN_SIZE,1,
		GDK_GL_BLUE_SIZE,1,
		GDK_GL_DOUBLEBUFFER,
		GDK_GL_NONE
	};
	
	assert( gdk_gl_query() && "Application requires OpenGL" );
	
	GtkWidget *glarea = GTK_WIDGET(gtk_gl_area_new(attrlist));
#else
	GtkWidget *glarea = GTK_WIDGET(gtk_drawing_area_new( ));
#endif

	_chisel_gtk_setup_events( glarea );
	
	gtk_widget_set_events( glarea, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK );
	
	gtk_signal_connect( GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(expose), NULL );
	gtk_signal_connect( GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(reshape), NULL );
	gtk_signal_connect( GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(reshape), NULL );
	
	return (native_handle)glarea;
}
Exemplo n.º 3
0
int main (int argc, char **argv)
{
	GtkWidget *window, *glarea;

	int attrlist[] = {
		GDK_GL_RGBA,
		GDK_GL_RED_SIZE,	1,
		GDK_GL_GREEN_SIZE,	1,
		GDK_GL_BLUE_SIZE,	1,
		GDK_GL_DOUBLEBUFFER,
		GDK_GL_NONE 
	};

	gtk_init (&argc, &argv);
	if (gdk_gl_query () == FALSE) return 0;

	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title (GTK_WINDOW(window), "Nuke Version 1.0");
	gtk_container_set_border_width (GTK_CONTAINER(window), 15);
	g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);

	/* You should always delete gtk_gl_area widgets before exit or else
	   GLX contexts are left undeleted, this may cause problems (=core dump)
	   in some systems.
	   Destroy method of objects is not automatically called on exit.
	   You need to manually enable this feature. Do gtk_quit_add_destroy()
	   for all your top level windows unless you are certain that they get
	   destroy signal by other means. */

	gtk_quit_add_destroy (1, GTK_OBJECT(window));

	glarea = GTK_WIDGET(gtk_gl_area_new (attrlist));
	gtk_widget_set_size_request (GTK_WIDGET(glarea), 1000, 800);

	gtk_widget_set_events (GTK_WIDGET(glarea), GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);

	g_signal_connect (glarea, "expose_event", G_CALLBACK(draw), NULL);
	g_signal_connect (glarea, "configure_event", G_CALLBACK(reshape), NULL);
	g_signal_connect (glarea, "realize", G_CALLBACK(init), NULL);

	gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(glarea));
	gtk_widget_show (GTK_WIDGET(glarea));
	gtk_widget_show (GTK_WIDGET(window));

	gtk_main ();
	return 0;
}
Exemplo n.º 4
0
int main(int argc, char* argv[]) {
  Gtk::Main kit(argc, argv);

  if (!gdk_gl_query()) {
    std::cerr << "No OpenGL support" << std::endl;
    return -1;
  }

  Graal::level_editor::preferences prefs;

  boost::filesystem::path preferences_path;
  preferences_path = Glib::get_user_config_dir();
  preferences_path = preferences_path / "gonstruct";
  
  // Make sure all directories to this path exist
  boost::filesystem::create_directories(preferences_path);

  prefs.load(preferences_path / "preferences");
  set_default_preferences(prefs);
  { // destroy window before preferences get serialised
    boost::scoped_ptr<Graal::level_editor::preferences_display> prefs_display;
    boost::scoped_ptr<Graal::level_editor::window> editor;

    if (!boost::filesystem::is_directory(prefs.graal_dir)) {
      prefs_display.reset(new Graal::level_editor::preferences_display(prefs));
      prefs_display->signal_hide().connect(
          sigc::bind(&start_editor, argc, argv,
                                    sigc::ref(editor), sigc::ref(prefs)));
      prefs_display->show_all();
    } else {
      Glib::signal_idle().connect(
          sigc::bind_return(
            sigc::bind(&start_editor, argc, argv,
                       sigc::ref(editor), sigc::ref(prefs)),
            false));
    }

    kit.run();
  }
  prefs.save(preferences_path / "preferences");

  return 0;
}
Exemplo n.º 5
0
//A foprogram
int main(int argc, char **argv) {
	GtkWidget *window, *glarea;

	int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE, 1, GDK_GL_GREEN_SIZE, 1,
			GDK_GL_BLUE_SIZE, 1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE };

	//Meghivjuk az init fuggvenyt
	gtk_init(&argc, &argv);
	if (gdk_gl_query() == FALSE)
		return 0;

	//Letrehozunk egy uj ablakot
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	//Megadjuk az ablak cimet
	gtk_window_set_title(GTK_WINDOW(window), "Gtk+Opengl");
	//Beallitjuk a szelek vastagsagat
	gtk_container_set_border_width(GTK_CONTAINER(window), 10);
	//Kilepeskor meghivja a delete_event-t
	g_signal_connect(window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
	gtk_quit_add_destroy(1, GTK_OBJECT(window) );

	//Letrehozom az OpenGl rajzfeluletet
	glarea = GTK_WIDGET(gtk_gl_area_new (attrlist));
	gtk_widget_set_size_request(GTK_WIDGET(glarea), 100, 100);

	//Az ablakra vontakozo esemenyek eseten a `glarea`-t is ujrarajzoljuk
	gtk_widget_set_events(GTK_WIDGET(glarea),
			GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK);

	g_signal_connect(glarea, "expose_event", G_CALLBACK(draw), NULL);
	g_signal_connect(glarea, "configure_event", G_CALLBACK(reshape), NULL);
	g_signal_connect(glarea, "realize", G_CALLBACK(init), NULL);

	//Az ablakhoz hozzaadok egy tarolot, majd ehhez a tarolohoz egy rajzfeluletet
	gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(glarea) );
	gtk_widget_show(GTK_WIDGET(glarea) );
	gtk_widget_show(GTK_WIDGET(window) );

	gtk_main();
	return 0;
}
Exemplo n.º 6
0
int main(int argc, char **argv)
{
  GtkWidget *window,*vbox,*logo,*glarea;

  /* Attribute list for gtkglarea widget. Specifies a
     list of Boolean attributes and enum/integer
     attribute/value pairs. The last attribute must be
     GDK_GL_NONE. See glXChooseVisual manpage for further
     explanation.
  */
  int attrlist[] = {
    GDK_GL_RGBA,
    GDK_GL_RED_SIZE,1,
    GDK_GL_GREEN_SIZE,1,
    GDK_GL_BLUE_SIZE,1,
    GDK_GL_DOUBLEBUFFER,
    GDK_GL_NONE
  };

#ifdef FULLSCREEN_MESA_3DFX
  setenv("MESA_GLX_FX", "", 1);
  setenv("FX_GLIDE_NO_SPLASH", "", 1);
#endif

  /* initialize gtk */
  gtk_init(&argc, &argv);

  /* Check if OpenGL (GLX extension) is supported. */
  if (gdk_gl_query() == FALSE) {
    g_print("OpenGL not supported\n");
    return 0;
  }

  /* Create new top level window. */
  window = gtk_window_new( GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), "Zktor");

  /* Quit form main if got delete event */
  gtk_signal_connect(GTK_OBJECT(window), "delete_event",
		     GTK_SIGNAL_FUNC(gtk_main_quit), NULL);


  /* You should always delete gtk_gl_area widgets before exit or else
     GLX contexts are left undeleted, this may cause problems (=core dump)
     in some systems.
     Destroy method of objects is not automatically called on exit.
     You need to manually enable this feature. Do gtk_quit_add_destroy()
     for all your top level windows unless you are certain that they get
     destroy signal by other means.
  */
  gtk_quit_add_destroy(1, GTK_OBJECT(window));


  vbox = GTK_WIDGET(gtk_vbox_new(FALSE, 0));
  gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);


  logo = gtk_label_new("Zktor");


  /* Create new OpenGL widget. */
  glarea = GTK_WIDGET(gtk_gl_area_new(attrlist));
  /* Events for widget must be set before X Window is created */
  gtk_widget_set_events(GTK_WIDGET(glarea),
			GDK_EXPOSURE_MASK|
			GDK_KEY_PRESS_MASK|
			GDK_KEY_RELEASE_MASK);
  /* set minimum size */
  /*  gtk_widget_set_usize(GTK_WIDGET(glarea), 200,200); */
  /* set default size */
  gtk_gl_area_size(GTK_GL_AREA(glarea), 640,400);


  /* Connect signal handlers */
  /* Redraw image when exposed. */
  gtk_signal_connect(GTK_OBJECT(glarea), "expose_event",
		     GTK_SIGNAL_FUNC(draw), NULL);
  /* When window is resized viewport needs to be resized also. */
  gtk_signal_connect(GTK_OBJECT(glarea), "configure_event",
		     GTK_SIGNAL_FUNC(reshape), NULL);
  /* Do initialization when widget has been realized. */
  gtk_signal_connect(GTK_OBJECT(glarea), "realize",
		     GTK_SIGNAL_FUNC(init), NULL);
  /* Capture keypress events */
  gtk_signal_connect(GTK_OBJECT(glarea), "key_press_event",
		     GTK_SIGNAL_FUNC(key_press_event), NULL);
  gtk_signal_connect(GTK_OBJECT(glarea), "key_release_event",
		     GTK_SIGNAL_FUNC(key_release_event), NULL);

  /* construct widget hierarchy  */
  gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(vbox));
  gtk_box_pack_start(GTK_BOX(vbox),   logo, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(vbox), glarea,  TRUE,  TRUE, 0);



  /* show all widgets */
  gtk_widget_show(GTK_WIDGET(glarea));
  gtk_widget_show(GTK_WIDGET(logo));
  gtk_widget_show(GTK_WIDGET(vbox));
  gtk_widget_show(window);

  /* set focus to glarea widget */
  GTK_WIDGET_SET_FLAGS(glarea, GTK_CAN_FOCUS);
  gtk_widget_grab_focus(GTK_WIDGET(glarea));

  /* animating */
  gtk_idle_add((GtkFunction)animate, glarea);

  game_init();
  gtk_main();


  return 0;
}
Exemplo n.º 7
0
int main(int argc, char *argv[])
{
	GtkWidget *window, *box, *glarea;

	gtk_init (&argc, &argv);

	EGLX_main(1);

	if (gdk_gl_query() == FALSE)
	{
		g_print ("GL not supported !\n");
		return 0;
	}

	gchar *info_str;
	info_str = gdk_gl_get_info();
	g_print (info_str);
	g_free (info_str);

	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title (GTK_WINDOW(window), "Simple Wayland-EGL");
	gtk_container_set_border_width (GTK_CONTAINER(window), 10);
	borderw = gtk_container_get_border_width (GTK_CONTAINER(window));
	titlebarw = 30; /* HOW DO WE OBTAIN THAT ? */

	int attrs[] = {
	    GDK_GL_RGBA,
	    GDK_GL_RED_SIZE,1,
	    GDK_GL_GREEN_SIZE,1,
	    GDK_GL_BLUE_SIZE,1,
	    GDK_GL_DOUBLEBUFFER,
	    GDK_GL_NONE
	  };

	guint myborder = gtk_container_get_border_width (GTK_CONTAINER(window));

	glarea = GTK_WIDGET(gtk_gl_area_new(attrs));
	gtk_widget_set_size_request (GTK_WIDGET(glarea), 320,240);

	g_signal_connect (GTK_WIDGET(window), "destroy",
			 G_CALLBACK(gtk_main_quit), NULL);

	g_signal_connect (GTK_WIDGET(glarea), "draw",
			 G_CALLBACK(draw), NULL);
	g_signal_connect (GTK_WIDGET(glarea), "realize",
			 G_CALLBACK(init), NULL);

	g_signal_connect (GTK_WIDGET(window), "draw",
			G_CALLBACK(resize), NULL);

	box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	gtk_container_add (GTK_CONTAINER(box), GTK_WIDGET(glarea));
	gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(box));

	gtk_widget_show (window);
	gtk_widget_show (glarea);
	gtk_widget_show (box);

	gtk_main();

	return 0;
}
Exemplo n.º 8
0
Arquivo: fsv.c Projeto: Explorer09/fsv
int
main( int argc, char **argv )
{
	int opt_id;
	char *root_dir;

	/* Initialize global variables */
	globals.fstree = NULL;
	globals.history = NULL;
	/* Set sane camera state so setup_modelview_matrix( ) in ogl.c
	 * doesn't choke. (It does get called in splash screen mode) */
	camera->fov = 45.0;
	camera->near_clip = 1.0;
	camera->far_clip = 2.0;

#ifdef DEBUG
	debug_init( );
#endif
#ifdef ENABLE_NLS
	/* Initialize internationalization (i8e i18n :-) */
	setlocale( LC_ALL, "" );
	bindtextdomain( PACKAGE, LOCALEDIR );
	textdomain( PACKAGE );
#endif

	/* Parse command-line options */
	for (;;) {
		opt_id = getopt_long( argc, argv, "", cli_opts, NULL );
		if (opt_id < 0)
			break;
		switch (opt_id) {
			case OPT_DISCV:
			/* --discv */
			initial_fsv_mode = FSV_DISCV;
			break;

			case OPT_MAPV:
			/* --mapv */
			initial_fsv_mode = FSV_MAPV;
			break;

			case OPT_TREEV:
			/* --treev */
			initial_fsv_mode = FSV_TREEV;
			break;

			case OPT_CACHEDIR:
			/* --cachedir <dir> */
			printf( "cache directory: %s\n", optarg );
			printf( "(caching not yet implemented)\n" );
			/* TODO: Implement caching */
			break;

			case OPT_NOCACHE:
			/* --nocache */
			/* TODO: Implement caching */
			break;

			case OPT_HELP:
			/* --help */
			default:
			/* unrecognized option */
			printf( _(usage_summary), argv[0] );
			fflush( stdout );
			exit( EXIT_SUCCESS );
			break;
		}
	}

	/* Determine root directory */
	if (optind < argc) {
                /* From command line */
		root_dir = xstrdup( argv[optind++] );
		if (optind < argc) {
			/* Excess arguments! */
			fprintf( stderr, _("Junk in command line:") );
			while (optind < argc)
				fprintf( stderr, " %s", argv[optind++] );
			fprintf( stderr, "\n" );
			fflush( stderr );
		}
	}
	else {
		/* Use current directory */
		root_dir = xstrdup( "." );
	}

	/* Initialize GTK+ */
	gtk_init( &argc, &argv );

	/* Check for OpenGL support */
	if (!gdk_gl_query( ))
		quit( _("fsv requires OpenGL support.") );

	window_init( initial_fsv_mode );
	color_init( );

	fsv_load( root_dir );
	xfree( root_dir );

	gtk_main( );

	return 0;
}
Exemplo n.º 9
0
int main(int argc, char **argv)
{
  GtkWidget *window,*glarea;

  gtk_init(&argc, &argv);

  if (argc == 1) {
    fontname = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*";
  } else if (argc == 2) {
    fontname = argv[1];
  } else if (argc > 2) {
    g_print("Usage: gdkfont [font]\n");
    return 0;
  }


  /* Check if OpenGL (GLX extension) is supported. */
  if (gdk_gl_query() == FALSE) {
    g_print("OpenGL not supported\n");
    return 0;
  }

  /* Create new top level window. */
  window = gtk_window_new( GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), "gdkfont");
  gtk_container_set_border_width(GTK_CONTAINER(window), 10);

  /* Quit form main if got delete event */
  gtk_signal_connect(GTK_OBJECT(window), "delete_event",
		     GTK_SIGNAL_FUNC(gtk_main_quit), NULL);

  /* Delete  widget before exit */
  gtk_quit_add_destroy(1, GTK_OBJECT(window));

  /* Create new OpenGL widget. */
  glarea = GTK_WIDGET(gtk_gl_area_new_vargs(NULL,
					    GDK_GL_RGBA,
					    GDK_GL_RED_SIZE,1,
					    GDK_GL_GREEN_SIZE,1,
					    GDK_GL_BLUE_SIZE,1,
					    GDK_GL_DEPTH_SIZE,1,
					    GDK_GL_NONE));

  gtk_widget_set_events(GTK_WIDGET(glarea),
			GDK_EXPOSURE_MASK|
			GDK_BUTTON_PRESS_MASK);

  /* Connect signal handlers */
  gtk_signal_connect(GTK_OBJECT(glarea), "expose_event",
		     GTK_SIGNAL_FUNC(draw), NULL);
  gtk_signal_connect(GTK_OBJECT(glarea), "configure_event",
		     GTK_SIGNAL_FUNC(reshape), NULL);
  gtk_signal_connect(GTK_OBJECT(glarea), "realize",
		     GTK_SIGNAL_FUNC(init), NULL);

  gtk_widget_set_usize(GTK_WIDGET(glarea), 450,100);

  /* put glarea into window and show it all */
  gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(glarea));
  gtk_widget_show(GTK_WIDGET(glarea));
  gtk_widget_show(GTK_WIDGET(window));

  gtk_main();

  return 0;
}
Exemplo n.º 10
0
/*!
  \brief main() is the typical main function in a C program, it performs
  all core initialization, loading of all main parameters, initializing handlers
  and entering gtk_main to process events until program close
  \param argc is the count of command line arguments
  \param argv is the array of command line args
  \returns TRUE
  */
gint main(gint argc, gchar ** argv)
{
	Serial_Params *serial_params = NULL;
	GAsyncQueue *queue = NULL;
	GTimer *timer = NULL;
	GCond *rtv_thread_cond = NULL;
	GMutex *dash_mutex = NULL;
	GMutex *rtt_mutex = NULL;
	GMutex *rtv_mutex = NULL;
	GMutex *rtv_thread_mutex = NULL;
	GMutex *serio_mutex = NULL;
	gint id = 0;
	setlocale(LC_ALL,"");
#ifdef __WIN32__
	bindtextdomain(PACKAGE, "C:\\Program Files\\MegaTunix\\dist\\locale");
#else
	bindtextdomain(PACKAGE, LOCALEDIR);
#endif
	textdomain (PACKAGE);

#ifdef DEBUG
	printf("This is a debug release, Git hash: %s\n",GIT_HASH);
#endif
	// Not needed?
//	gdk_threads_init();
	gtk_init(&argc, &argv);
	glade_init();

	/* Check if OpenGL is supported. */
	if (gdk_gl_query() == FALSE) {
		g_print("OpenGL not supported\n");
		return 0;
	}
	else
		gl_ability = TRUE;

//	gdk_gl_init_check(&argc, &argv);
//	gl_ability = gtk_gl_init_check(&argc, &argv);

	global_data = g_new0(gconstpointer, 1);

	/* Condition Variables */
	rtv_thread_cond = g_new0(GCond,1);
	g_cond_init(rtv_thread_cond);
	DATA_SET(global_data,"rtv_thread_cond",rtv_thread_cond);
	/* Mutexes */
	dash_mutex = g_new0(GMutex, 1);
	g_mutex_init(dash_mutex);
	DATA_SET(global_data,"dash_mutex",dash_mutex);
	rtt_mutex = g_new0(GMutex, 1);
	g_mutex_init(rtt_mutex);
	DATA_SET(global_data,"rtt_mutex",rtt_mutex);
	rtv_mutex = g_new0(GMutex, 1);
	g_mutex_init(rtv_mutex);
	DATA_SET(global_data,"rtv_mutex",rtv_mutex);
	rtv_thread_mutex = g_new0(GMutex, 1);
	g_mutex_init(rtv_thread_mutex);
	DATA_SET(global_data,"rtv_thread_mutex",rtv_thread_mutex);
	serio_mutex = g_new0(GMutex, 1);
	g_mutex_init(serio_mutex);
	DATA_SET(global_data,"serio_mutex",serio_mutex);

	/* For testing if gettext works
	   printf(_("Hello World!\n"));
	 */

	/* Build table of strings to enum values */
	build_string_2_enum_table();
	serial_params = (Serial_Params *)g_malloc0(sizeof(Serial_Params));
	DATA_SET(global_data,"serial_params",serial_params);

	handle_args(argc,argv);	/* handle CLI arguments */

	/* This will exit mtx if the locking fails! */
	/* Prevents multiple instances  but stops esoteric usess too 
	 * create_mtx_lock();
	 * */
	open_debug();		/* Open debug log */

	ENTER();
	/* Allocate memory  */
	init();			/* Initialize global vars */
	make_mtx_dirs();	/* Create config file dirs if missing */

	/* Create Message passing queues */
	queue = g_async_queue_new();
	DATA_SET_FULL(global_data,"io_data_queue",queue,g_async_queue_unref);
	queue = g_async_queue_new();
	DATA_SET_FULL(global_data,"slave_msg_queue",queue,g_async_queue_unref);
	queue = g_async_queue_new();
	DATA_SET_FULL(global_data,"io_repair_queue",queue,g_async_queue_unref);

	read_config();
	setup_gui();		

	gtk_rc_parse_string("style \"override\"\n{\n\tGtkTreeView::horizontal-separator = 0\n\tGtkTreeView::vertical-separator = 0\n}\nwidget_class \"*\" style \"override\"");

	/* This doesn't do any GUI stuff so can run as is... */
	id = g_timeout_add(2000,(GSourceFunc)flush_binary_logs,NULL);
    DATA_SET(global_data,"binlog_flush_id",GINT_TO_POINTER(id));

	sleep_calib();
	/* Check for first_time flag, if so, run first time wizard, otherwise
	   load personality choice
	   */
	timer = g_timer_new();
	DATA_SET_FULL(global_data,"mtx_uptime_timer",timer,g_timer_destroy);
	g_idle_add((GSourceFunc)check_for_first_time,NULL);
	
	DATA_SET(global_data,"ready",GINT_TO_POINTER(TRUE));

	gdk_threads_enter();
	gtk_main();
	gdk_threads_leave();
	EXIT();
	return (0);
}