示例#1
0
int jackSyncCb(jack_transport_state_t state, jack_position_t *pos,
		void *arg)
{
	switch (state) {
		case JackTransportStopped:
			gLog("[KA] Jack transport stopped, frame=%d\n", pos->frame);
			glue_stopSeq(false);  // false = not from GUI
			if (pos->frame == 0)
				glue_rewindSeq();
			break;

		case JackTransportRolling:
			gLog("[KA] Jack transport rolling\n");
			break;

		case JackTransportStarting:
			gLog("[KA] Jack transport starting, frame=%d\n", pos->frame);
			glue_startSeq(false);  // false = not from GUI
			if (pos->frame == 0)
				glue_rewindSeq();
			break;

		default:
			gLog("[KA] Jack transport [unknown]\n");
	}
	return 1;
}
示例#2
0
int Keyboard::handle(int e) {
	int ret = Fl_Group::handle(e);  // assume the buttons won't handle the Keyboard events
	switch (e) {
		case FL_FOCUS:
		case FL_UNFOCUS: {
			ret = 1;                	// enables receiving Keyboard events
			break;
		}
		case FL_SHORTCUT:           // in case widget that isn't ours has focus
		case FL_KEYDOWN:            // Keyboard key pushed
		case FL_KEYUP: {            // Keyboard key released

			/* rewind session. Avoid retrigs */

			if (e == FL_KEYDOWN) {
				if (Fl::event_key() == FL_BackSpace && !bckspcPressed) {
					bckspcPressed = true;
					glue_rewindSeq();
					ret = 1;
					break;
				}
				else if (Fl::event_key() == FL_End && !endPressed) {
					endPressed = true;
					glue_startStopInputRec(false);  // update gui
					ret = 1;
					break;
				}
				else if (Fl::event_key() == FL_Enter && !enterPressed) {
					enterPressed = true;
					glue_startStopActionRec();
					ret = 1;
					break;
				}
				else if (Fl::event_key() == ' ' && !spacePressed) {
					spacePressed = true;
					G_Mixer.running ? glue_stopSeq() : glue_startSeq();
					ret = 1;
					break;
				}
			}
			else if (e == FL_KEYUP) {
				if (Fl::event_key() == FL_BackSpace)
					bckspcPressed = false;
				else if (Fl::event_key() == FL_End)
					endPressed = false;
				else if (Fl::event_key() == ' ')
					spacePressed = false;
				else if (Fl::event_key() == FL_Enter)
					enterPressed = false;
			}

			/* Walk button arrays, trying to match button's label with the Keyboard event.
			 * If found, set that button's value() based on up/down event,
			 * and invoke that button's callback() */

			for (int i=0; i<gChannelsL->children(); i++)
				ret &= ((gChannel*)gChannelsL->child(i))->keyPress(e);
			for (int i=0; i<gChannelsR->children(); i++)
				ret &= ((gChannel*)gChannelsR->child(i))->keyPress(e);
			break;
		}
	}
	return ret;
}
示例#3
0
void gdMainWindow::__cb_startstop() {
	G_Mixer.running ? glue_stopSeq() : glue_startSeq();
}