/* ZynAddSubFX - a software synthesizer LASHClient.cpp - LASH support Copyright (C) 2006-2009 Lars Luthman Author: Lars Luthman This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. 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 (version 2 or later) for more details. You should have received a copy of the GNU General Public License (version 2) along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include "LASHClient.h" LASHClient::LASHClient(int *argc, char ***argv) { client = lash_init(lash_extract_args(argc, argv), "ZynAddSubFX", LASH_Config_File, LASH_PROTOCOL(2, 0)); } void LASHClient::setalsaid(int id) { if(lash_enabled(client)) if(id != -1) lash_alsa_client_id(client, id); } void LASHClient::setjackname(const char *name) { if(lash_enabled(client)) if(name != NULL) { lash_jack_client_name(client, name); lash_event_t *event = lash_event_new_with_type(LASH_Client_Name); lash_event_set_string(event, name); lash_send_event(client, event); } } LASHClient::Event LASHClient::checkevents(std::string &filename) { if(!lash_enabled(client)) return NoEvent; Event received = NoEvent; lash_event_t *event; while(event = lash_get_event(client)) { // save if(lash_event_get_type(event) == LASH_Save_File) { std::cerr << "LASH event: LASH_Save_File" << std::endl; filename = std::string(lash_event_get_string(event)) + "/master.xmz"; received = Save; break; } // restore else if(lash_event_get_type(event) == LASH_Restore_File) { std::cerr << "LASH event: LASH_Restore_File" << std::endl; filename = std::string(lash_event_get_string(event)) + "/master.xmz"; received = Restore; break; } // quit else if(lash_event_get_type(event) == LASH_Quit) { std::cerr << "LASH event: LASH_Quit" << std::endl; received = Quit; break; } lash_event_destroy(event); } return received; } void LASHClient::confirmevent(Event event) { if(event == Save) lash_send_event(client, lash_event_new_with_type(LASH_Save_File)); else if(event == Restore) lash_send_event(client, lash_event_new_with_type(LASH_Restore_File)); }