diff options
| -rw-r--r-- | src/drumgizmo.cc | 25 | ||||
| -rw-r--r-- | src/drumgizmo.h | 15 | ||||
| -rw-r--r-- | src/message.h | 47 | 
3 files changed, 87 insertions, 0 deletions
| diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index ec03d76..93426de 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -56,6 +56,31 @@ DrumGizmo::~DrumGizmo()    */  } +/* + * Send a message to the engine. The engine takes over the memory. + */ +void DrumGizmo::sendMessage(Message *msg) +{ +  message_mutex.lock(); +  message_queue.push_back(msg); +  message_mutex.unlock(); +} + +/* + * Receive message from the engine. The caller takes over the memory. + */ +Message *DrumGizmo::receiveMessage() +{ +  Message *msg = NULL; +  message_mutex.lock(); +  if(message_queue.size()) { +    msg = message_queue.front(); +    message_queue.pop_front(); +  } +  message_mutex.unlock(); +  return msg; +} +  std::string DrumGizmo::drumkitfile()  {    return kitfile; diff --git a/src/drumgizmo.h b/src/drumgizmo.h index e79dad0..92faa3c 100644 --- a/src/drumgizmo.h +++ b/src/drumgizmo.h @@ -41,6 +41,8 @@  #include "mutex.h" +#include "message.h" +  #define MAX_NUM_CHANNELS 512  class DrumGizmo { @@ -68,7 +70,20 @@ public:    std::string midimapfile;    std::string kitfile; +  /* +   * Send a message to the engine. The engine takes over the memory. +   */ +  void sendMessage(Message *msg); + +  /* +   * Receive message from the engine. The caller takes over the memory. +   */ +  Message *receiveMessage(); +  private: +  Mutex message_mutex; +  std::list<Message *> message_queue; +    DrumKitLoader loader;    Mutex mutex; diff --git a/src/message.h b/src/message.h new file mode 100644 index 0000000..c9e630d --- /dev/null +++ b/src/message.h @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            message.h + * + *  Wed Mar 20 15:50:57 CET 2013 + *  Copyright 2013 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#ifndef __DRUMGIZMO_MESSAGE_H__ +#define __DRUMGIZMO_MESSAGE_H__ + +class Message { +public: +  typedef enum { +    LoadStatus, +  } type_t; + +  virtual type_t type() = 0; +}; + +class LoadStatus : public Message { +public: +  type_t type() { return Message::LoadStatus; } +  unsigned int number_of_files; +  unsigned int numer_of_files_loaded; +  std::string current_file; +}; + +#endif/*__DRUMGIZMO_MESSAGE_H__*/ | 
