/**
@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 ;

}
Beispiel #2
0
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);
}
Beispiel #3
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);
}
Beispiel #4
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;
}