6 std::list
<av_snooper
*>* snoopers
;
7 std::list
<av_snooper::dump_notification
*> notifiers
;
8 std::string s_gamename
;
9 std::string s_rerecords
;
11 std::list
<std::pair
<std::string
, std::string
>> s_authors
;
15 av_snooper::av_snooper() throw(std::bad_alloc
)
18 snoopers
= new std::list
<av_snooper
*>();
19 snoopers
->push_back(this);
20 for(auto i
= notifiers
.begin(); i
!= notifiers
.end(); i
++)
21 (*i
)->dump_starting();
24 av_snooper::~av_snooper() throw()
28 for(auto i
= snoopers
->begin(); i
!= snoopers
->end(); i
++)
33 for(auto i
= notifiers
.begin(); i
!= notifiers
.end(); i
++)
37 void av_snooper::frame(struct lcscreen
& _frame
, uint32_t fps_n
, uint32_t fps_d
, window
* win
) throw()
41 for(auto i
= snoopers
->begin(); i
!= snoopers
->end(); i
++)
43 (*i
)->frame(_frame
, fps_n
, fps_d
, win
, true);
44 } catch(std::bad_alloc
& e
) {
46 } catch(std::exception
& e
) {
48 win
->message(std::string("Error dumping frame: ") + e
.what());
54 void av_snooper::sample(short l
, short r
, window
* win
) throw()
58 for(auto i
= snoopers
->begin(); i
!= snoopers
->end(); i
++)
61 } catch(std::bad_alloc
& e
) {
63 } catch(std::exception
& e
) {
65 win
->message(std::string("Error dumping sample: ") + e
.what());
71 void av_snooper::end(window
* win
) throw()
75 for(auto i
= snoopers
->begin(); i
!= snoopers
->end(); i
++)
78 } catch(std::bad_alloc
& e
) {
80 } catch(std::exception
& e
) {
82 win
->message(std::string("Error ending dump: ") + e
.what());
88 void av_snooper::gameinfo(const std::string
& gamename
, const std::list
<std::pair
<std::string
, std::string
>>&
89 authors
, double gametime
, const std::string
& rerecords
, window
* win
) throw(std::bad_alloc
)
93 s_gamename
= gamename
;
95 s_gametime
= gametime
;
96 s_rerecords
= rerecords
;
98 for(auto i
= snoopers
->begin(); i
!= snoopers
->end(); i
++)
99 (*i
)->send_gameinfo();
102 void av_snooper::send_gameinfo() throw()
106 gameinfo(s_gamename
, s_authors
, s_gametime
, s_rerecords
);
111 bool av_snooper::dump_in_progress() throw()
113 return (snoopers
&& !snoopers
->empty());
116 av_snooper::dump_notification::~dump_notification() throw()
120 void av_snooper::dump_notification::dump_starting() throw()
124 void av_snooper::dump_notification::dump_ending() throw()
128 void av_snooper::add_dump_notifier(av_snooper::dump_notification
& notifier
) throw(std::bad_alloc
)
130 notifiers
.push_back(¬ifier
);
133 void av_snooper::remove_dump_notifier(av_snooper::dump_notification
& notifier
) throw()
135 for(auto i
= notifiers
.begin(); i
!= notifiers
.end(); i
++)
136 if(*i
== ¬ifier
) {