static void * thread_c( void UNUSED(*dummy)) { skDQErr_t err; meet(); INFOMSG("**** Test 1 ****"); err = skDequePushFront(da, (void*)xa); XASSERT(err == SKDQ_SUCCESS); starta(); meet(); INFOMSG("**** Test 2 ****"); starta(); SLEEP(1); err = skDequePushFront(da, (void*)xa); XASSERT(err == SKDQ_SUCCESS); meet(); INFOMSG("**** Test 3 ****"); starta(); SLEEP(1); startb(); SLEEP(1); err = skDequePushFront(da, (void*)xa); XASSERT(err == SKDQ_SUCCESS); err = skDequePushFront(da, (void*)xb); XASSERT(err == SKDQ_SUCCESS); meet(); XASSERT(resulta == 1 && resultb == 1); /* End */ starta(); startb(); return NULL; }
/** \brief Signal handler. \param cr is a pointer to the cairo context \return always true Draws population development (of preys and predators) in the cairo context object. */ bool Graph::on_draw (const Cairo::RefPtr<Cairo::Context> &cr) { int w = get_width(); int h = get_height(); if (_is_enabled) { cr->save(); cr->rectangle(0, 0, w, h); cr->set_source_rgb(1, 1, 1); cr->fill(); Bounded<TValues::size_type> startb(0, 0, _values[PREY].size()); Bounded<TValues::size_type> stopb(0, 0, _values[PREY].size()); TValues::size_type start = 0; TValues::size_type stop = 0; if (_cont_zoom) { stop = _values[PREY].size(); start = 0; } else { if (_cont_pos) { stopb = _values[PREY].size(); start = (stopb - _visible_range).get_value(); stop = start + _visible_range; } else { start = _visible_position; stop = start + _visible_range; } } draw_line(cr, _values[PREY], _max_values[PREY], start, stop); cr->set_source_rgb(0, 0, 0); cr->stroke(); draw_line(cr, _values[PREDATOR], _max_values[PREDATOR], start, stop); cr->set_source_rgb(1, 0, 0); cr->stroke(); cr->restore(); } return true; }