Search
lxdream.org :: lxdream/src/gtkui/gtkui.c :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/gtkui/gtkui.c
changeset 736:a02d1475ccfd
prev691:ad3356543392
next738:0cbff49086b8
author nkeynes
date Mon Jul 14 07:44:42 2008 +0000 (12 years ago)
permissions -rw-r--r--
last change Re-indent everything consistently
Fix include guards for consistency as well
file annotate diff log raw
1.1 --- a/src/gtkui/gtkui.c Thu Jun 19 04:40:37 2008 +0000
1.2 +++ b/src/gtkui/gtkui.c Mon Jul 14 07:44:42 2008 +0000
1.3 @@ -35,11 +35,11 @@
1.4 uint32_t gtk_gui_run_slice( uint32_t nanosecs );
1.5
1.6 struct dreamcast_module gtk_gui_module = { "gui", NULL,
1.7 - gtk_gui_update,
1.8 - gtk_gui_start,
1.9 - gtk_gui_run_slice,
1.10 - gtk_gui_stop,
1.11 - NULL, NULL };
1.12 + gtk_gui_update,
1.13 + gtk_gui_start,
1.14 + gtk_gui_run_slice,
1.15 + gtk_gui_stop,
1.16 + NULL, NULL };
1.17
1.18 /**
1.19 * Single-instance windows (at most one)
1.20 @@ -68,38 +68,38 @@
1.21
1.22 // UI Actions
1.23 static const GtkActionEntry ui_actions[] = {
1.24 - { "FileMenu", NULL, N_("_File") },
1.25 - { "SettingsMenu", NULL, N_("_Settings") },
1.26 - { "HelpMenu", NULL, N_("_Help") },
1.27 - { "LoadBinary", NULL, N_("Load _Binary..."), NULL, N_("Load and run a program binary"), G_CALLBACK(load_binary_action_callback) },
1.28 - { "Reset", GTK_STOCK_REFRESH, N_("_Reset"), "<control>R", N_("Reset dreamcast"), G_CALLBACK(reset_action_callback) },
1.29 - { "Pause", GTK_STOCK_MEDIA_PAUSE, N_("_Pause"), NULL, N_("Pause dreamcast"), G_CALLBACK(pause_action_callback) },
1.30 - { "Run", GTK_STOCK_MEDIA_PLAY, N_("Resume"), NULL, N_("Resume"), G_CALLBACK(resume_action_callback) },
1.31 - { "LoadState", GTK_STOCK_REVERT_TO_SAVED, N_("_Load state..."), "F4", N_("Load an lxdream save state"), G_CALLBACK(load_state_action_callback) },
1.32 - { "SaveState", GTK_STOCK_SAVE_AS, N_("_Save state..."), "F3", N_("Create an lxdream save state"), G_CALLBACK(save_state_action_callback) },
1.33 - { "Exit", GTK_STOCK_QUIT, N_("E_xit"), NULL, N_("Exit lxdream"), G_CALLBACK(exit_action_callback) },
1.34 - { "GdromSettings", NULL, N_("_GD-Rom...") },
1.35 - { "GdromUnmount", NULL, N_("_Empty") },
1.36 - { "GdromMount", GTK_STOCK_CDROM, N_("_Open Image..."), "<control>O", N_("Mount a cdrom disc"), G_CALLBACK(mount_action_callback) },
1.37 - { "PathSettings", NULL, N_("_Paths..."), NULL, N_("Configure files and paths"), G_CALLBACK(path_settings_callback) },
1.38 - { "AudioSettings", NULL, N_("_Audio..."), NULL, N_("Configure audio output"), G_CALLBACK(audio_settings_callback) },
1.39 - { "ControllerSettings", NULL, N_("_Controllers..."), NULL, N_("Configure controllers"), G_CALLBACK(maple_settings_callback) },
1.40 - { "NetworkSettings", NULL, N_("_Network..."), NULL, N_("Configure network settings"), G_CALLBACK(network_settings_callback) },
1.41 - { "VideoSettings", NULL, N_("_Video..."), NULL,N_( "Configure video output"), G_CALLBACK(video_settings_callback) },
1.42 - { "About", GTK_STOCK_ABOUT, N_("_About..."), NULL, N_("About lxdream"), G_CALLBACK(about_action_callback) },
1.43 - { "DebugMenu", NULL, N_("_Debug") },
1.44 - { "Debugger", NULL, N_("_Debugger"), NULL, N_("Open debugger window"), G_CALLBACK(debugger_action_callback) },
1.45 - { "DebugMem", NULL, N_("View _Memory"), NULL, N_("View memory dump"), G_CALLBACK(debug_memory_action_callback) },
1.46 - { "DebugMmio", NULL, N_("View IO _Registers"), NULL, N_("View MMIO Registers"), G_CALLBACK(debug_mmio_action_callback) },
1.47 - { "SaveScene", NULL, N_("_Save Scene"), NULL, N_("Save next rendered scene"), G_CALLBACK(save_scene_action_callback) },
1.48 - { "SingleStep", GTK_STOCK_REDO, N_("_Single Step"), NULL, N_("Single step"), G_CALLBACK(debug_step_action_callback) },
1.49 - { "RunTo", GTK_STOCK_GOTO_LAST, N_("Run _To"), NULL, N_("Run to"), G_CALLBACK( debug_runto_action_callback) },
1.50 - { "SetBreakpoint", GTK_STOCK_CLOSE, N_("_Breakpoint"), NULL, N_("Toggle breakpoint"), G_CALLBACK( debug_breakpoint_action_callback) }
1.51 + { "FileMenu", NULL, N_("_File") },
1.52 + { "SettingsMenu", NULL, N_("_Settings") },
1.53 + { "HelpMenu", NULL, N_("_Help") },
1.54 + { "LoadBinary", NULL, N_("Load _Binary..."), NULL, N_("Load and run a program binary"), G_CALLBACK(load_binary_action_callback) },
1.55 + { "Reset", GTK_STOCK_REFRESH, N_("_Reset"), "<control>R", N_("Reset dreamcast"), G_CALLBACK(reset_action_callback) },
1.56 + { "Pause", GTK_STOCK_MEDIA_PAUSE, N_("_Pause"), NULL, N_("Pause dreamcast"), G_CALLBACK(pause_action_callback) },
1.57 + { "Run", GTK_STOCK_MEDIA_PLAY, N_("Resume"), NULL, N_("Resume"), G_CALLBACK(resume_action_callback) },
1.58 + { "LoadState", GTK_STOCK_REVERT_TO_SAVED, N_("_Load state..."), "F4", N_("Load an lxdream save state"), G_CALLBACK(load_state_action_callback) },
1.59 + { "SaveState", GTK_STOCK_SAVE_AS, N_("_Save state..."), "F3", N_("Create an lxdream save state"), G_CALLBACK(save_state_action_callback) },
1.60 + { "Exit", GTK_STOCK_QUIT, N_("E_xit"), NULL, N_("Exit lxdream"), G_CALLBACK(exit_action_callback) },
1.61 + { "GdromSettings", NULL, N_("_GD-Rom...") },
1.62 + { "GdromUnmount", NULL, N_("_Empty") },
1.63 + { "GdromMount", GTK_STOCK_CDROM, N_("_Open Image..."), "<control>O", N_("Mount a cdrom disc"), G_CALLBACK(mount_action_callback) },
1.64 + { "PathSettings", NULL, N_("_Paths..."), NULL, N_("Configure files and paths"), G_CALLBACK(path_settings_callback) },
1.65 + { "AudioSettings", NULL, N_("_Audio..."), NULL, N_("Configure audio output"), G_CALLBACK(audio_settings_callback) },
1.66 + { "ControllerSettings", NULL, N_("_Controllers..."), NULL, N_("Configure controllers"), G_CALLBACK(maple_settings_callback) },
1.67 + { "NetworkSettings", NULL, N_("_Network..."), NULL, N_("Configure network settings"), G_CALLBACK(network_settings_callback) },
1.68 + { "VideoSettings", NULL, N_("_Video..."), NULL,N_( "Configure video output"), G_CALLBACK(video_settings_callback) },
1.69 + { "About", GTK_STOCK_ABOUT, N_("_About..."), NULL, N_("About lxdream"), G_CALLBACK(about_action_callback) },
1.70 + { "DebugMenu", NULL, N_("_Debug") },
1.71 + { "Debugger", NULL, N_("_Debugger"), NULL, N_("Open debugger window"), G_CALLBACK(debugger_action_callback) },
1.72 + { "DebugMem", NULL, N_("View _Memory"), NULL, N_("View memory dump"), G_CALLBACK(debug_memory_action_callback) },
1.73 + { "DebugMmio", NULL, N_("View IO _Registers"), NULL, N_("View MMIO Registers"), G_CALLBACK(debug_mmio_action_callback) },
1.74 + { "SaveScene", NULL, N_("_Save Scene"), NULL, N_("Save next rendered scene"), G_CALLBACK(save_scene_action_callback) },
1.75 + { "SingleStep", GTK_STOCK_REDO, N_("_Single Step"), NULL, N_("Single step"), G_CALLBACK(debug_step_action_callback) },
1.76 + { "RunTo", GTK_STOCK_GOTO_LAST, N_("Run _To"), NULL, N_("Run to"), G_CALLBACK( debug_runto_action_callback) },
1.77 + { "SetBreakpoint", GTK_STOCK_CLOSE, N_("_Breakpoint"), NULL, N_("Toggle breakpoint"), G_CALLBACK( debug_breakpoint_action_callback) }
1.78 };
1.79 static const GtkToggleActionEntry ui_toggle_actions[] = {
1.80 - { "FullScreen", NULL, "_Full Screen", "<alt>Return", "Toggle full screen video", G_CALLBACK(fullscreen_toggle_callback), 0 },
1.81 + { "FullScreen", NULL, "_Full Screen", "<alt>Return", "Toggle full screen video", G_CALLBACK(fullscreen_toggle_callback), 0 },
1.82 };
1.83 -
1.84 +
1.85 // Menus and toolbars
1.86 static const char *ui_description =
1.87 "<ui>"
1.88 @@ -199,43 +199,43 @@
1.89 gboolean gui_init( gboolean withDebug )
1.90 {
1.91 if( gtk_gui_init_ok ) {
1.92 - GError *error = NULL;
1.93 - dreamcast_register_module( &gtk_gui_module );
1.94 - gtk_gui_alloc_resources();
1.95 -
1.96 - global_action_group = gtk_action_group_new("MenuActions");
1.97 - gtk_action_group_set_translation_domain( global_action_group, NULL );
1.98 - gtk_action_group_add_actions( global_action_group, ui_actions, G_N_ELEMENTS(ui_actions), NULL );
1.99 - gtk_action_group_add_toggle_actions( global_action_group, ui_toggle_actions, G_N_ELEMENTS(ui_toggle_actions), NULL );
1.100 - gtk_gui_enable_action("AudioSettings", FALSE);
1.101 - gtk_gui_enable_action("NetworkSettings", FALSE);
1.102 - gtk_gui_enable_action("VideoSettings", FALSE);
1.103 -
1.104 - global_ui_manager = gtk_ui_manager_new();
1.105 - gtk_ui_manager_set_add_tearoffs(global_ui_manager, TRUE);
1.106 - gtk_ui_manager_insert_action_group( global_ui_manager, global_action_group, 0 );
1.107 -
1.108 - if (!gtk_ui_manager_add_ui_from_string (global_ui_manager, ui_description, -1, &error)) {
1.109 - g_message ("building menus failed: %s", error->message);
1.110 - g_error_free (error);
1.111 - exit(1);
1.112 - }
1.113 - GtkAccelGroup *accel_group = gtk_ui_manager_get_accel_group (global_ui_manager);
1.114 - GtkWidget *menubar = gtk_ui_manager_get_widget(global_ui_manager, "/MainMenu");
1.115 - GtkWidget *toolbar = gtk_ui_manager_get_widget(global_ui_manager, "/MainToolbar");
1.116 -
1.117 - GtkWidget *gdrommenuitem = gtk_ui_manager_get_widget(global_ui_manager, "/MainMenu/FileMenu/GdromSettings");
1.118 - GtkWidget *gdrommenu = gdrom_menu_new();
1.119 - gtk_menu_item_set_submenu( GTK_MENU_ITEM(gdrommenuitem), gdrommenu );
1.120 - main_win = main_window_new( APP_NAME " " APP_VERSION, menubar, toolbar, accel_group );
1.121 - main_window_set_use_grab(main_win, TRUE);
1.122 - if( withDebug ) {
1.123 - gtk_gui_show_debugger();
1.124 - }
1.125 + GError *error = NULL;
1.126 + dreamcast_register_module( &gtk_gui_module );
1.127 + gtk_gui_alloc_resources();
1.128
1.129 - return TRUE;
1.130 + global_action_group = gtk_action_group_new("MenuActions");
1.131 + gtk_action_group_set_translation_domain( global_action_group, NULL );
1.132 + gtk_action_group_add_actions( global_action_group, ui_actions, G_N_ELEMENTS(ui_actions), NULL );
1.133 + gtk_action_group_add_toggle_actions( global_action_group, ui_toggle_actions, G_N_ELEMENTS(ui_toggle_actions), NULL );
1.134 + gtk_gui_enable_action("AudioSettings", FALSE);
1.135 + gtk_gui_enable_action("NetworkSettings", FALSE);
1.136 + gtk_gui_enable_action("VideoSettings", FALSE);
1.137 +
1.138 + global_ui_manager = gtk_ui_manager_new();
1.139 + gtk_ui_manager_set_add_tearoffs(global_ui_manager, TRUE);
1.140 + gtk_ui_manager_insert_action_group( global_ui_manager, global_action_group, 0 );
1.141 +
1.142 + if (!gtk_ui_manager_add_ui_from_string (global_ui_manager, ui_description, -1, &error)) {
1.143 + g_message ("building menus failed: %s", error->message);
1.144 + g_error_free (error);
1.145 + exit(1);
1.146 + }
1.147 + GtkAccelGroup *accel_group = gtk_ui_manager_get_accel_group (global_ui_manager);
1.148 + GtkWidget *menubar = gtk_ui_manager_get_widget(global_ui_manager, "/MainMenu");
1.149 + GtkWidget *toolbar = gtk_ui_manager_get_widget(global_ui_manager, "/MainToolbar");
1.150 +
1.151 + GtkWidget *gdrommenuitem = gtk_ui_manager_get_widget(global_ui_manager, "/MainMenu/FileMenu/GdromSettings");
1.152 + GtkWidget *gdrommenu = gdrom_menu_new();
1.153 + gtk_menu_item_set_submenu( GTK_MENU_ITEM(gdrommenuitem), gdrommenu );
1.154 + main_win = main_window_new( APP_NAME " " APP_VERSION, menubar, toolbar, accel_group );
1.155 + main_window_set_use_grab(main_win, TRUE);
1.156 + if( withDebug ) {
1.157 + gtk_gui_show_debugger();
1.158 + }
1.159 +
1.160 + return TRUE;
1.161 } else {
1.162 - return FALSE;
1.163 + return FALSE;
1.164 }
1.165 }
1.166
1.167 @@ -258,18 +258,18 @@
1.168 gboolean gui_error_dialog( const char *msg, ... )
1.169 {
1.170 if( main_win != NULL ) {
1.171 - va_list args;
1.172 - GtkWidget *dialog =
1.173 - gtk_message_dialog_new( main_window_get_frame(main_win), GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
1.174 - GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, NULL );
1.175 - va_start(args, msg);
1.176 - gchar *markup = g_markup_vprintf_escaped( msg, args );
1.177 - va_end( args );
1.178 - gtk_message_dialog_set_markup( GTK_MESSAGE_DIALOG(dialog), markup );
1.179 - g_free(markup);
1.180 - gtk_dialog_run(GTK_DIALOG(dialog));
1.181 - gtk_widget_destroy(dialog);
1.182 - return TRUE;
1.183 + va_list args;
1.184 + GtkWidget *dialog =
1.185 + gtk_message_dialog_new( main_window_get_frame(main_win), GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
1.186 + GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, NULL );
1.187 + va_start(args, msg);
1.188 + gchar *markup = g_markup_vprintf_escaped( msg, args );
1.189 + va_end( args );
1.190 + gtk_message_dialog_set_markup( GTK_MESSAGE_DIALOG(dialog), markup );
1.191 + g_free(markup);
1.192 + gtk_dialog_run(GTK_DIALOG(dialog));
1.193 + gtk_widget_destroy(dialog);
1.194 + return TRUE;
1.195 }
1.196 return FALSE;
1.197 }
1.198 @@ -282,28 +282,28 @@
1.199 void gtk_gui_show_debugger()
1.200 {
1.201 if( debug_win ) {
1.202 - debug_window_show(debug_win, TRUE);
1.203 + debug_window_show(debug_win, TRUE);
1.204 } else {
1.205 - GtkAccelGroup *accel_group = gtk_ui_manager_get_accel_group (global_ui_manager);
1.206 - GtkWidget *menubar = gtk_ui_manager_get_widget(global_ui_manager, "/DebugMenu");
1.207 - GtkWidget *toolbar = gtk_ui_manager_get_widget(global_ui_manager, "/DebugToolbar");
1.208 - GtkWidget *gdrommenuitem = gtk_ui_manager_get_widget(global_ui_manager, "/DebugMenu/FileMenu/GdromSettings");
1.209 - GtkWidget *gdrommenu = gdrom_menu_new();
1.210 - gtk_menu_item_set_submenu( GTK_MENU_ITEM(gdrommenuitem), gdrommenu );
1.211 - gchar *title = g_strdup_printf( APP_NAME " " APP_VERSION " :: %s", _("Debugger"));
1.212 - debug_win = debug_window_new( title, menubar, toolbar, accel_group );
1.213 - g_free(title);
1.214 + GtkAccelGroup *accel_group = gtk_ui_manager_get_accel_group (global_ui_manager);
1.215 + GtkWidget *menubar = gtk_ui_manager_get_widget(global_ui_manager, "/DebugMenu");
1.216 + GtkWidget *toolbar = gtk_ui_manager_get_widget(global_ui_manager, "/DebugToolbar");
1.217 + GtkWidget *gdrommenuitem = gtk_ui_manager_get_widget(global_ui_manager, "/DebugMenu/FileMenu/GdromSettings");
1.218 + GtkWidget *gdrommenu = gdrom_menu_new();
1.219 + gtk_menu_item_set_submenu( GTK_MENU_ITEM(gdrommenuitem), gdrommenu );
1.220 + gchar *title = g_strdup_printf( APP_NAME " " APP_VERSION " :: %s", _("Debugger"));
1.221 + debug_win = debug_window_new( title, menubar, toolbar, accel_group );
1.222 + g_free(title);
1.223 }
1.224 }
1.225
1.226 void gtk_gui_show_mmio()
1.227 {
1.228 if( mmio_win ) {
1.229 - mmio_window_show(mmio_win, TRUE);
1.230 + mmio_window_show(mmio_win, TRUE);
1.231 } else {
1.232 - gchar *title = g_strdup_printf( APP_NAME " " APP_VERSION " :: %s", _("MMIO Registers"));
1.233 - mmio_win = mmio_window_new( title );
1.234 - g_free(title);
1.235 + gchar *title = g_strdup_printf( APP_NAME " " APP_VERSION " :: %s", _("MMIO Registers"));
1.236 + mmio_win = mmio_window_new( title );
1.237 + g_free(title);
1.238 }
1.239 }
1.240
1.241 @@ -331,7 +331,7 @@
1.242 {
1.243 main_window_set_running( main_win, TRUE );
1.244 if( debug_win != NULL ) {
1.245 - debug_window_set_running( debug_win, TRUE );
1.246 + debug_window_set_running( debug_win, TRUE );
1.247 }
1.248 gtk_gui_nanos = 0;
1.249 gettimeofday(&gtk_gui_lasttv,NULL);
1.250 @@ -350,15 +350,15 @@
1.251 void gtk_gui_update( void )
1.252 {
1.253 if( global_action_group ) {
1.254 - gtk_gui_enable_action("Run", dreamcast_can_run() && !dreamcast_is_running() );
1.255 - gtk_gui_enable_action("Pause", dreamcast_is_running() );
1.256 + gtk_gui_enable_action("Run", dreamcast_can_run() && !dreamcast_is_running() );
1.257 + gtk_gui_enable_action("Pause", dreamcast_is_running() );
1.258 }
1.259 if( debug_win ) {
1.260 - debug_window_set_running( debug_win, FALSE );
1.261 - debug_window_update(debug_win);
1.262 + debug_window_set_running( debug_win, FALSE );
1.263 + debug_window_update(debug_win);
1.264 }
1.265 if( mmio_win ) {
1.266 - mmio_window_update(mmio_win);
1.267 + mmio_window_update(mmio_win);
1.268 }
1.269 dump_window_update_all();
1.270 }
1.271 @@ -453,17 +453,17 @@
1.272 gint gtk_gui_run_property_dialog( const gchar *title, GtkWidget *panel, gtk_dialog_done_fn fn )
1.273 {
1.274 GtkWidget *dialog =
1.275 - gtk_dialog_new_with_buttons(title, main_window_get_frame(main_win),
1.276 - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
1.277 - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
1.278 - GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
1.279 - NULL);
1.280 + gtk_dialog_new_with_buttons(title, main_window_get_frame(main_win),
1.281 + GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
1.282 + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
1.283 + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
1.284 + NULL);
1.285 gint result;
1.286 gtk_widget_show_all(panel);
1.287 gtk_container_add( GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), panel );
1.288 result = gtk_dialog_run( GTK_DIALOG(dialog) );
1.289 if( fn != NULL ) {
1.290 - fn(panel, result == GTK_RESPONSE_ACCEPT);
1.291 + fn(panel, result == GTK_RESPONSE_ACCEPT);
1.292 }
1.293 gtk_widget_destroy( dialog );
1.294 return result;
1.295 @@ -477,21 +477,21 @@
1.296 static void delete_frame_buffer( guchar *pixels, gpointer buffer )
1.297 {
1.298 if( buffer != NULL ) {
1.299 - g_free(buffer);
1.300 + g_free(buffer);
1.301 }
1.302 }
1.303
1.304 GdkPixbuf *gdk_pixbuf_new_from_frame_buffer( frame_buffer_t buffer )
1.305 {
1.306 return gdk_pixbuf_new_from_data( (unsigned char *)buffer->data,
1.307 - GDK_COLORSPACE_RGB,
1.308 - (buffer->colour_format == COLFMT_BGRA8888),
1.309 - 8,
1.310 - buffer->width,
1.311 - buffer->height,
1.312 - buffer->rowstride,
1.313 - delete_frame_buffer,
1.314 - buffer );
1.315 + GDK_COLORSPACE_RGB,
1.316 + (buffer->colour_format == COLFMT_BGRA8888),
1.317 + 8,
1.318 + buffer->width,
1.319 + buffer->height,
1.320 + buffer->rowstride,
1.321 + delete_frame_buffer,
1.322 + buffer );
1.323 }
1.324
1.325 /**
1.326 @@ -504,9 +504,9 @@
1.327 {
1.328 GdkKeymap *keymap = gdk_keymap_get_default();
1.329 guint keyval;
1.330 -
1.331 +
1.332 gdk_keymap_translate_keyboard_state( keymap, event->hardware_keycode, 0, 0, &keyval,
1.333 - NULL, NULL, NULL );
1.334 + NULL, NULL, NULL );
1.335 return keyval;
1.336 }
1.337
1.338 @@ -514,13 +514,13 @@
1.339 {
1.340 char tmp[PATH_MAX];
1.341 if( in_path == NULL ) {
1.342 - return NULL;
1.343 + return NULL;
1.344 }
1.345 if( in_path[0] == '/' || in_path[0] == 0 ) {
1.346 - return g_strdup(in_path);
1.347 + return g_strdup(in_path);
1.348 } else {
1.349 - getcwd(tmp, sizeof(tmp));
1.350 - return g_strdup_printf("%s%c%s", tmp, G_DIR_SEPARATOR, in_path);
1.351 + getcwd(tmp, sizeof(tmp));
1.352 + return g_strdup_printf("%s%c%s", tmp, G_DIR_SEPARATOR, in_path);
1.353 }
1.354 }
1.355
.