LASHClient.cpp (2541B)
1 /* 2 ZynAddSubFX - a software synthesizer 3 4 LASHClient.cpp - LASH support 5 Copyright (C) 2006-2009 Lars Luthman 6 Author: Lars Luthman 7 8 This program is free software; you can redistribute it and/or 9 modify it under the terms of the GNU General Public License 10 as published by the Free Software Foundation; either version 2 11 of the License, or (at your option) any later version. 12 */ 13 #include <unistd.h> 14 #include <iostream> 15 #include <string> 16 17 #include "LASHClient.h" 18 19 namespace zyn { 20 21 LASHClient::LASHClient(int *argc, char ***argv) 22 { 23 client = lash_init(lash_extract_args(argc, argv), "ZynAddSubFX", 24 LASH_Config_File, LASH_PROTOCOL(2, 0)); 25 } 26 27 28 void LASHClient::setalsaid(int id) 29 { 30 if(lash_enabled(client)) 31 if(id != -1) 32 lash_alsa_client_id(client, id); 33 } 34 35 36 void LASHClient::setjackname(const char *name) 37 { 38 if(lash_enabled(client)) 39 if(name != NULL) { 40 lash_jack_client_name(client, name); 41 42 lash_event_t *event = lash_event_new_with_type(LASH_Client_Name); 43 lash_event_set_string(event, name); 44 lash_send_event(client, event); 45 } 46 } 47 48 49 LASHClient::Event LASHClient::checkevents(std::string &filename) 50 { 51 if(!lash_enabled(client)) 52 return NoEvent; 53 54 Event received = NoEvent; 55 lash_event_t *event; 56 while((event = lash_get_event(client))) { 57 // save 58 if(lash_event_get_type(event) == LASH_Save_File) { 59 std::cerr << "LASH event: LASH_Save_File" << std::endl; 60 filename = std::string(lash_event_get_string(event)) 61 + "/master.xmz"; 62 received = Save; 63 break; 64 } 65 // restore 66 else 67 if(lash_event_get_type(event) == LASH_Restore_File) { 68 std::cerr << "LASH event: LASH_Restore_File" << std::endl; 69 filename = std::string(lash_event_get_string(event)) 70 + "/master.xmz"; 71 received = Restore; 72 break; 73 } 74 // quit 75 else 76 if(lash_event_get_type(event) == LASH_Quit) { 77 std::cerr << "LASH event: LASH_Quit" << std::endl; 78 received = Quit; 79 break; 80 } 81 82 lash_event_destroy(event); 83 } 84 return received; 85 } 86 87 88 void LASHClient::confirmevent(Event event) 89 { 90 if(event == Save) 91 lash_send_event(client, lash_event_new_with_type(LASH_Save_File)); 92 else 93 if(event == Restore) 94 lash_send_event(client, lash_event_new_with_type(LASH_Restore_File)); 95 } 96 97 }