@@ -0,0 +1,56 @@ | |||||
/*******************************************************************************/ | |||||
/* Copyright (C) 2008 Jonathan Moore Liles */ | |||||
/* */ | |||||
/* This program 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. */ | |||||
/* */ | |||||
/* This program 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 This program; see the file COPYING. If not,write to the Free Software */ | |||||
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||||
/*******************************************************************************/ | |||||
/* actual implementation of our side of the LASH protocol */ | |||||
#include "LASH.H" | |||||
#include "debug.h" | |||||
LASH::LASH ( ) | |||||
{ | |||||
} | |||||
LASH::~LASH ( ) | |||||
{ | |||||
} | |||||
bool | |||||
LASH::handle_save_file ( const char *path ) | |||||
{ | |||||
MESSAGE( "LASH wants us to save \"%s\"", path ); | |||||
return true; | |||||
} | |||||
bool | |||||
LASH::handle_restore_file ( const char *path ) | |||||
{ | |||||
MESSAGE( "LASH wants us to load \"%s\"", path ); | |||||
return true; | |||||
} | |||||
void | |||||
LASH::handle_quit ( void ) | |||||
{ | |||||
MESSAGE( "LASH wants us to quit" ); | |||||
} |
@@ -0,0 +1,36 @@ | |||||
/*******************************************************************************/ | |||||
/* Copyright (C) 2008 Jonathan Moore Liles */ | |||||
/* */ | |||||
/* This program 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. */ | |||||
/* */ | |||||
/* This program 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 This program; see the file COPYING. If not,write to the Free Software */ | |||||
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||||
/*******************************************************************************/ | |||||
#pragma once | |||||
#include "LASH_Client.H" | |||||
class LASH : public LASH_Client | |||||
{ | |||||
public: | |||||
LASH ( ); | |||||
~LASH ( ); | |||||
bool handle_save_file ( const char *path ); | |||||
bool handle_restore_file ( const char *path ); | |||||
void handle_quit ( void ); | |||||
}; |
@@ -38,8 +38,6 @@ LASH_Client::~LASH_Client ( ) | |||||
bool | bool | ||||
LASH_Client::init ( const char *jack_name, const char *long_name, int *argc, char ***argv ) | LASH_Client::init ( const char *jack_name, const char *long_name, int *argc, char ***argv ) | ||||
{ | { | ||||
MESSAGE( "Initializing LASH" ); | |||||
if ( ! ( _void = lash_init( lash_extract_args( argc, argv ), jack_name, | if ( ! ( _void = lash_init( lash_extract_args( argc, argv ), jack_name, | ||||
LASH_Config_File, LASH_PROTOCOL( 2, 0 ) ) ) ) | LASH_Config_File, LASH_PROTOCOL( 2, 0 ) ) ) ) | ||||
return false; | return false; | ||||
@@ -68,8 +66,6 @@ LASH_Client::poll ( void ) | |||||
{ | { | ||||
case LASH_Save_File: | case LASH_Save_File: | ||||
{ | { | ||||
MESSAGE( "LASH wants us to save \"%s\"", name ); | |||||
handle_save_file( name ); | handle_save_file( name ); | ||||
lash_send_event( _client, lash_event_new_with_type( LASH_Save_File ) ); | lash_send_event( _client, lash_event_new_with_type( LASH_Save_File ) ); | ||||
@@ -79,9 +75,7 @@ LASH_Client::poll ( void ) | |||||
} | } | ||||
case LASH_Restore_File: | case LASH_Restore_File: | ||||
{ | { | ||||
MESSAGE( "LASH wants us to load \"%s\"", name ); | |||||
if ( ! handle_load_file( name ) ) | |||||
if ( ! handle_restore_file( name ) ) | |||||
/* FIXME: should we tell lash that we couldn't load the song? */; | /* FIXME: should we tell lash that we couldn't load the song? */; | ||||
lash_send_event( _client, lash_event_new_with_type( LASH_Restore_File ) ); | lash_send_event( _client, lash_event_new_with_type( LASH_Restore_File ) ); | ||||
@@ -89,7 +83,6 @@ LASH_Client::poll ( void ) | |||||
break; | break; | ||||
} | } | ||||
case LASH_Quit: | case LASH_Quit: | ||||
MESSAGE( "LASH wants us to quit" ); | |||||
handle_quit(); | handle_quit(); | ||||
break; | break; | ||||
default: | default: | ||||
@@ -29,9 +29,9 @@ class LASH_Client | |||||
protected: | protected: | ||||
virtual bool handle_load_file ( const char *path ) = 0; | |||||
virtual bool handle_save_file ( const char *path ) = 0; | virtual bool handle_save_file ( const char *path ) = 0; | ||||
virtual bool handle_quit ( void ) = 0; | |||||
virtual bool handle_restore_file ( const char *path ) = 0; | |||||
virtual void handle_quit ( void ) = 0; | |||||
public: | public: | ||||
@@ -51,9 +51,12 @@ | |||||
#include "Project.H" | #include "Project.H" | ||||
#include "LASH.H" | |||||
Engine *engine; | Engine *engine; | ||||
Timeline *timeline; | Timeline *timeline; | ||||
Transport *transport; | Transport *transport; | ||||
LASH *lash; | |||||
/* TODO: put these in a header */ | /* TODO: put these in a header */ | ||||
#define USER_CONFIG_DIR ".non-daw/" | #define USER_CONFIG_DIR ".non-daw/" | ||||
@@ -81,6 +84,15 @@ ensure_dirs ( void ) | |||||
return r == 0 || errno == EEXIST; | return r == 0 || errno == EEXIST; | ||||
} | } | ||||
const float lash_poll_interval = 0.2f; | |||||
static void | |||||
lash_cb ( void *arg ) | |||||
{ | |||||
lash->poll(); | |||||
Fl::repeat_timeout( lash_poll_interval, lash_cb, 0 ); | |||||
} | |||||
int | int | ||||
main ( int argc, char **argv ) | main ( int argc, char **argv ) | ||||
@@ -116,6 +128,13 @@ main ( int argc, char **argv ) | |||||
* scenario requiring otherwise */ | * scenario requiring otherwise */ | ||||
transport->stop(); | transport->stop(); | ||||
MESSAGE( "Initializing LASH" ); | |||||
lash = new LASH; | |||||
lash->init( APP_NAME, APP_TITLE, &argc, &argv ); | |||||
Fl::add_timeout( lash_poll_interval, lash_cb, 0 ); | |||||
if ( argc > 1 ) | if ( argc > 1 ) | ||||
if ( ! Project::open( argv[ 1 ] ) ) | if ( ! Project::open( argv[ 1 ] ) ) | ||||
FATAL( "Could not open project specified on command line" ); | FATAL( "Could not open project specified on command line" ); | ||||
@@ -3,6 +3,7 @@ | |||||
Timeline_VERSION := 0.5.0 | Timeline_VERSION := 0.5.0 | ||||
Timeline_SRCS= \ | Timeline_SRCS= \ | ||||
Timeline/LASH.C \ | |||||
Timeline/LASH_Client.C \ | Timeline/LASH_Client.C \ | ||||
Timeline/Annotation_Region.C \ | Timeline/Annotation_Region.C \ | ||||
Timeline/Audio_File.C \ | Timeline/Audio_File.C \ | ||||