-#ifdef USE_FILEFORK
- if( !is_fork && MWindow::file_server && (rd || wr) ) {
- FileForker this_is(*forked);
-// printf("File::open_file %d file_server=%p rd=%d wr=%d %d\n",
-// __LINE__,
-// MWindow::file_server,
-// rd,
-// wr,
-// asset->ms_quantization);
- file_fork = MWindow::file_server->new_filefork();
-//printf("File::open_file %d\n", __LINE__);
-
-// Send the asset
-// Convert to hash table
- BC_Hash table;
- asset->save_defaults(&table, "", 1, 1, 1, 1, 1);
-// Convert to string
- char *string = 0;
- table.save_string(string);
- int buffer_size = sizeof(int) * 7 + strlen(string) + 1;
- unsigned char *buffer = new unsigned char[buffer_size];
- int offset = 0;
- *(int*)(buffer + offset) = rd;
- offset += sizeof(int);
- *(int*)(buffer + offset) = wr;
- offset += sizeof(int);
- *(int*)(buffer + offset) = cpus;
- offset += sizeof(int);
- *(int*)(buffer + offset) = white_balance_raw;
- offset += sizeof(int);
- *(int*)(buffer + offset) = interpolate_raw;
- offset += sizeof(int);
- *(int*)(buffer + offset) = playback_subtitle;
- offset += sizeof(int);
- *(int*)(buffer + offset) = current_program;
- offset += sizeof(int);
- memcpy(buffer + offset, string, strlen(string) + 1);
-//printf("File::open_file %d\n", __LINE__);
- file_fork->send_command(FileFork::OPEN_FILE,
- buffer,
- buffer_size);
- delete [] buffer;
- free(string);
-//printf("File::open_file %d\n", __LINE__);
-
-// Get the updated asset from the fork
- result = file_fork->read_result();
-//printf("File::open_file %d\n", __LINE__);
- if(!result)
- {
- table.load_string((char*)file_fork->result_data);
-
- asset->load_defaults(&table, "", 1, 1, 1, 1, 1);
- this->asset->load_defaults(&table, "", 1, 1, 1, 1, 1);
-//this->asset->dump();
- }
-//printf("File::open_file %d\n", __LINE__);
-
-
-// If it's a scene renderer, close it & reopen it locally to get the
-// full OpenGL support.
-// Just doing 2D for now. Should be forked in case Festival crashes.
-// if(rd && this->asset->format == FILE_SCENE)
-// {
-// //printf("File::open_file %p %d\n", this, __LINE__);
-// close_file(0);
-// // Lie to get it to work properly
-// is_fork = 1;
-// }
-// else
- {
- return result;
- }
- }
-#endif
-
-