20 |
#include <iostream> |
#include <iostream> |
21 |
#include <cstring> |
#include <cstring> |
22 |
|
|
23 |
|
#include <glibmm/convert.h> |
24 |
|
#include <glibmm/dispatcher.h> |
25 |
|
#include <glibmm/miscutils.h> |
26 |
|
#include <glibmm/stringutils.h> |
27 |
#include <gtkmm/aboutdialog.h> |
#include <gtkmm/aboutdialog.h> |
28 |
#include <gtkmm/filechooserdialog.h> |
#include <gtkmm/filechooserdialog.h> |
29 |
#include <gtkmm/messagedialog.h> |
#include <gtkmm/messagedialog.h> |
465 |
void Loader::progress_callback(float fraction) |
void Loader::progress_callback(float fraction) |
466 |
{ |
{ |
467 |
{ |
{ |
468 |
Glib::Mutex::Lock lock(progressMutex); |
Glib::Threads::Mutex::Lock lock(progressMutex); |
469 |
progress = fraction; |
progress = fraction; |
470 |
} |
} |
471 |
progress_dispatcher(); |
progress_dispatcher(); |
473 |
|
|
474 |
void Loader::thread_function() |
void Loader::thread_function() |
475 |
{ |
{ |
476 |
printf("thread_function self=%x\n", Glib::Thread::self()); |
printf("thread_function self=%x\n", Glib::Threads::Thread::self()); |
477 |
printf("Start %s\n", filename); |
printf("Start %s\n", filename); |
478 |
RIFF::File* riff = new RIFF::File(filename); |
RIFF::File* riff = new RIFF::File(filename); |
479 |
gig = new gig::File(riff); |
gig = new gig::File(riff); |
493 |
|
|
494 |
void Loader::launch() |
void Loader::launch() |
495 |
{ |
{ |
496 |
thread = Glib::Thread::create(sigc::mem_fun(*this, &Loader::thread_function), true); |
thread = Glib::Threads::Thread::create(sigc::mem_fun(*this, &Loader::thread_function), true); |
497 |
printf("launch thread=%x\n", thread); |
printf("launch thread=%x\n", thread); |
498 |
} |
} |
499 |
|
|
501 |
{ |
{ |
502 |
float res; |
float res; |
503 |
{ |
{ |
504 |
Glib::Mutex::Lock lock(progressMutex); |
Glib::Threads::Mutex::Lock lock(progressMutex); |
505 |
res = progress; |
res = progress; |
506 |
} |
} |
507 |
return res; |
return res; |
621 |
if (dialog.run() == Gtk::RESPONSE_OK) { |
if (dialog.run() == Gtk::RESPONSE_OK) { |
622 |
std::string filename = dialog.get_filename(); |
std::string filename = dialog.get_filename(); |
623 |
printf("filename=%s\n", filename.c_str()); |
printf("filename=%s\n", filename.c_str()); |
624 |
printf("on_action_file_open self=%x\n", Glib::Thread::self()); |
printf("on_action_file_open self=%x\n", Glib::Threads::Thread::self()); |
625 |
load_file(filename.c_str()); |
load_file(filename.c_str()); |
626 |
current_gig_dir = Glib::path_get_dirname(filename); |
current_gig_dir = Glib::path_get_dirname(filename); |
627 |
} |
} |
663 |
void MainWindow::on_loader_finished() |
void MainWindow::on_loader_finished() |
664 |
{ |
{ |
665 |
printf("Loader finished!\n"); |
printf("Loader finished!\n"); |
666 |
printf("on_loader_finished self=%x\n", Glib::Thread::self()); |
printf("on_loader_finished self=%x\n", Glib::Threads::Thread::self()); |
667 |
load_gig(loader->gig, loader->filename); |
load_gig(loader->gig, loader->filename); |
668 |
load_dialog->hide(); |
load_dialog->hide(); |
669 |
} |
} |