process->write_to_stdin("get osdcfg\n");
int timeout = 40;
if (wait && knownstate !=127 && --timeout) {
- usleep(50000);
+ Glib::usleep(50000);
sched_yield();
}
}
*/
int timeout = 40;
while (is_started() && --timeout) {
- usleep(50000);
+ Glib::usleep(50000);
sched_yield();
}
if (timeout <= 0) {
VideoMonitor::send_cmd (int what, int param)
{
bool osd_update = false;
+ int prev_osdmode = osdmode;
if (!is_started()) return;
switch (what) {
case 1:
case 2:
if (param) osdmode |= 2;
else osdmode &= ~2;
- osd_update = true;
+ osd_update = (prev_osdmode != osdmode);
break;
case 3:
if (param) osdmode |= 1;
else osdmode &= ~1;
- osd_update = true;
+ osd_update = (prev_osdmode != osdmode);
break;
case 4:
if (param) osdmode |= 8;
else osdmode &= ~8;
- osd_update = true;
+ osd_update = (prev_osdmode != osdmode);
break;
case 5:
if (param) process->write_to_stdin("window zoom on\n");
default:
break;
}
- if (osd_update >= 0) {
+ if (osd_update) {
std::ostringstream osstream; osstream << "osd mode " << osdmode << "\n";
process->write_to_stdin(osstream.str());
}
{
Editor* ed = dynamic_cast<Editor*>(&PublicEditor::instance());
if (!ed) return;
-
- GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET(ed->gobj()));
- GdkKeymap *keymap = gdk_keymap_get_for_display (display);
- GdkKeymapKey *keymapkey = NULL;
- gint n_keys;
-
- if (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keymapkey, &n_keys)) return;
- if (n_keys !=1) { g_free(keymapkey); return;}
-
- GdkEventKey ev;
- ev.type = GDK_KEY_PRESS;
- ev.window = ed->get_window()->gobj();
- ev.send_event = FALSE;
- ev.time = 0;
- ev.state = 0;
- ev.keyval = keyval;
- ev.length = 0;
- ev.string = (gchar*) "";
- ev.hardware_keycode = keymapkey[0].keycode;
- ev.group = keymapkey[0].group;
- g_free(keymapkey);
-
- forward_key_press(&ev);
- ev.type = GDK_KEY_RELEASE;
- forward_key_press(&ev);
+ emulate_key_event(ed, keyval);
}
void
VideoMonitor::save_session ()
{
if (!_session) { return; }
- XMLNode* node = _session->extra_xml (X_("XJSettings"));
+ XMLNode* node = _session->extra_xml (X_("XJSettings"), true);
if (!node) return;
+ node->remove_nodes_and_delete("XJSetting");
for(XJSettings::const_iterator it = xjadeo_settings.begin(); it != xjadeo_settings.end(); ++it) {
XMLNode* child = node->add_child (X_("XJSetting"));
}
}
-void
-VideoMonitor::clear_session_state ()
-{
- xjadeo_settings.clear();
- if (!_session) { return; }
- XMLNode* node = new XMLNode(X_("XJSettings"));
- _session->add_extra_xml (*node);
- _session->set_dirty ();
-}
-
bool
VideoMonitor::set_custom_setting (const std::string k, const std::string v)
{
video_frame_offset = floor(offset * _session->timecode_frames_per_second() / audio_frame_rate);
}
- // TODO remember if changed..
+ if (video_offset == video_frame_offset) { return; }
+ video_offset = video_frame_offset;
+
std::ostringstream osstream1; osstream1 << -1 * video_frame_offset;
process->write_to_stdin("set offset " + osstream1.str() + "\n");
}
bool my_manual_seek = true;
if (_session->config.get_external_sync()) {
- if (ARDOUR::Config->get_sync_source() == ARDOUR::JACK)
+ if (ARDOUR::Config->get_sync_source() == ARDOUR::Engine)
my_manual_seek = false;
}