/[svn]/gigedit/trunk/src/gigedit/gigedit.cpp
ViewVC logotype

Diff of /gigedit/trunk/src/gigedit/gigedit.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1654 by schoenebeck, Wed Jan 30 02:20:48 2008 UTC revision 1823 by persson, Sun Dec 28 09:58:05 2008 UTC
# Line 25  Line 25 
25    
26  #include "global.h"  #include "global.h"
27    
 GigEditJob::GigEditJob() {  
     _msecs = 100; // 100ms by default  
 }  
   
 int GigEditJob::msecs() {  
     return _msecs;  
 }  
   
28  namespace {  namespace {
29    
30  // State for a gigedit thread.  // State for a gigedit thread.
# Line 48  public: Line 40  public:
40      GigEditState(GigEdit* parent) : parent(parent) { }      GigEditState(GigEdit* parent) : parent(parent) { }
41      void run(gig::Instrument* pInstrument);      void run(gig::Instrument* pInstrument);
42    
     static std::vector< GigEditJob* > timeoutJobs;  
43      MainWindow* window;      MainWindow* window;
44    
45  private:  private:
# Line 96  void init_app() { Line 87  void init_app() {
87          setlocale(LC_ALL, "");          setlocale(LC_ALL, "");
88    
89  #if HAVE_GETTEXT  #if HAVE_GETTEXT
90    
91    #ifdef WIN32
92    #if GLIB_CHECK_VERSION(2, 16, 0)
93            gchar* root =
94                g_win32_get_package_installation_directory_of_module(NULL);
95    #else
96            gchar* root =
97                g_win32_get_package_installation_directory(NULL, NULL);
98    #endif
99            gchar* temp = g_build_filename(root, "/share/locale", NULL);
100            g_free(root);
101            gchar* localedir = g_win32_locale_filename_from_utf8(temp);
102            g_free(temp);
103            bindtextdomain(GETTEXT_PACKAGE, localedir);
104            g_free(localedir);
105    #else
106          bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);          bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
107    #endif
108          bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");          bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
109          textdomain(GETTEXT_PACKAGE);          textdomain(GETTEXT_PACKAGE);
110  #endif // HAVE_GETTEXT  #endif // HAVE_GETTEXT
# Line 139  void connect_signals(GigEdit* gigedit, M Line 147  void connect_signals(GigEdit* gigedit, M
147      mainwindow->signal_sample_ref_changed().connect(      mainwindow->signal_sample_ref_changed().connect(
148          gigedit->signal_sample_ref_changed().make_slot()          gigedit->signal_sample_ref_changed().make_slot()
149      );      );
150        mainwindow->signal_keyboard_key_hit().connect(
151            gigedit->signal_keyboard_key_hit().make_slot()
152        );
153        mainwindow->signal_keyboard_key_released().connect(
154            gigedit->signal_keyboard_key_released().make_slot()
155        );
156  }  }
157    
158  } // namespace  } // namespace
# Line 168  int GigEdit::run(gig::Instrument* pInstr Line 182  int GigEdit::run(gig::Instrument* pInstr
182      return 0;      return 0;
183  }  }
184    
 void GigEdit::add_timeout_job(GigEditJob* job) {  
     GigEditState::timeoutJobs.push_back(job);  
 }  
   
185  void GigEdit::on_note_on_event(int key, int velocity) {  void GigEdit::on_note_on_event(int key, int velocity) {
186      if (!this->state) return;      if (!this->state) return;
187      GigEditState* state = (GigEditState*) this->state;      GigEditState* state = (GigEditState*) this->state;
# Line 220  sigc::signal<void, gig::Sample*/*old*/, Line 230  sigc::signal<void, gig::Sample*/*old*/,
230      return sample_ref_changed_signal;      return sample_ref_changed_signal;
231  }  }
232    
233    sigc::signal<void, int/*key*/, int/*velocity*/>& GigEdit::signal_keyboard_key_hit() {
234        return keyboard_key_hit_signal;
235    }
236    
237    sigc::signal<void, int/*key*/, int/*velocity*/>& GigEdit::signal_keyboard_key_released() {
238        return keyboard_key_released_signal;
239    }
240    
241  Glib::StaticMutex GigEditState::mutex = GLIBMM_STATIC_MUTEX_INIT;  Glib::StaticMutex GigEditState::mutex = GLIBMM_STATIC_MUTEX_INIT;
242  Glib::Dispatcher* GigEditState::dispatcher = 0;  Glib::Dispatcher* GigEditState::dispatcher = 0;
243  GigEditState* GigEditState::current = 0;  GigEditState* GigEditState::current = 0;
 std::vector<GigEditJob*> GigEditState::timeoutJobs;  
244    
245  void GigEditState::open_window_static() {  void GigEditState::open_window_static() {
246      GigEditState* c = GigEditState::current;      GigEditState* c = GigEditState::current;
# Line 258  void GigEditState::main_loop_run(Cond* i Line 274  void GigEditState::main_loop_run(Cond* i
274      dispatcher->connect(sigc::ptr_fun(&GigEditState::open_window_static));      dispatcher->connect(sigc::ptr_fun(&GigEditState::open_window_static));
275      initialized->signal();      initialized->signal();
276    
     for (int i = 0; i < GigEditState::timeoutJobs.size(); i++) {  
         GigEditJob* job = timeoutJobs[i];  
         const Glib::RefPtr<Glib::TimeoutSource> timeout_source =  
             Glib::TimeoutSource::create(job->msecs());  
         timeout_source->connect(  
             sigc::mem_fun(*job, &GigEditJob::runGigEditJob)  
         );  
         timeout_source->attach(Glib::MainContext::get_default());  
     }  
   
277      main_loop.run();      main_loop.run();
278  }  }
279    

Legend:
Removed from v.1654  
changed lines
  Added in v.1823

  ViewVC Help
Powered by ViewVC