/** @details -# Start disabled (non-real-time). Requirement [@ref non-real-time] */ Trick::RealtimeSync::RealtimeSync( Trick::Clock * in_clock , Trick::Timer * in_timer ) { /* Start disabled (non-real-time). */ enable_flag = false ; disable_flag = false ; active = false ; rt_max_overrun_cnt = 100000000; rt_max_overrun_time = 1.0e37; rt_overrun_freeze = false ; freeze_shutdown = false ; default_clock = in_clock ; change_clock(in_clock) ; change_timer(in_timer) ; align_sim_to_wall_clock = false ; align_tic_mult = 1.0 ; the_rts = this ; }
void update_clocks_min(void *arg) { // remember old_sec because after suspend/hibernate the clock should be updated directly, and not // on next minute change static time_t old_sec = 0; gettimeofday(&time_clock, 0); if (time_clock.tv_sec % 60 == 0 || time_clock.tv_sec - old_sec > 60 || (time1_format && !buf_time[0]) || (time2_format && !buf_date[0])) update_clocks(); old_sec = time_clock.tv_sec; change_timer(&clock_timer, true, ms_until_second_change(&time_clock), 0, update_clocks_min, 0); }
void update_clocks_sec(void *arg) { gettimeofday(&time_clock, 0); update_clocks(); change_timer(&clock_timer, true, ms_until_second_change(&time_clock), 0, update_clocks_sec, 0); }
int main() try { fcppt::io::istringstream ss( fcppt::from_std_string( "{\n" " \"sounds\" : {\n" " \"events\" : { \"bang\" : \"/tmp/bang.ogg\" },\n" " \"random\" : [ \"/tmp/hit.ogg\" ],\n" " \"crossfade_seconds\" : 5\n" " }\n" "}\n")); fcppt::io::cout << FCPPT_TEXT("File looks like \n") << ss.str() << FCPPT_TEXT("\n"); sge::parse::json::object o; if (!sge::parse::json::parse_stream(ss,o)) { fcppt::io::cerr << FCPPT_TEXT("parse_stream failed\n"); return EXIT_FAILURE; } sge::systems::instance sys( sge::systems::list() ( sge::systems::audio_loader( sge::audio::loader_capabilities_field::null(), {FCPPT_TEXT("wav"),FCPPT_TEXT("ogg")})) (sge::systems::audio_player_default())); insula::music_controller music( sge::parse::json::find_member_exn<sge::parse::json::object>( o.members, FCPPT_TEXT("sounds")), sys.audio_loader(), sys.audio_player()); fcppt::io::cout << FCPPT_TEXT("Ok, playing the event sound \"bang\"\n"); music.play_event( FCPPT_TEXT("bang")); sge::time::timer change_timer( sge::time::second( 10)); bool second_sound = false; sge::time::timer stop_timer( sge::time::second( 20)); bool stopped = false; while (true) { music.update(); if (change_timer.expired() && !second_sound) { fcppt::io::cout << FCPPT_TEXT("Now changing the sound\n"); music.play_random(); second_sound = true; } if (stop_timer.expired() && !stopped) { fcppt::io::cout << FCPPT_TEXT("Now stopping the sound\n"); music.stop(); stopped = true; } } } catch(sge::exception const &e) { fcppt::io::cerr << e.string() << FCPPT_TEXT('\n'); return EXIT_FAILURE; } catch (fcppt::exception const &e) { fcppt::io::cerr << e.string() << FCPPT_TEXT('\n'); return EXIT_FAILURE; } catch(std::exception const &e) { std::cerr << e.what() << FCPPT_TEXT('\n'); return EXIT_FAILURE; }