MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / Process

Method Process

music/streamer.cpp:71–148  ·  view source on GitHub ↗

processes a stream's events.

Source from the content-addressed store, hash-verified

69
70// processes a stream's events.
71void oms_stream::Process(float frmtime) {
72 oms_q_evt evt, evt2 = {}; // event for use
73
74 if (m_timer > 0.0f)
75 m_timer -= frmtime;
76
77 // invalidate current process result.
78 m_valid_result = false;
79
80 if (!processCommand())
81 return;
82
83 // process queue events.
84 if (!m_q.recv(&evt))
85 return;
86
87 switch (evt.cmd) {
88 case OMS_STRM_LOAD:
89 processQLoad((const char *)evt.parm.p);
90 break;
91
92 case OMS_STRM_FADEOUT:
93 // reset timer for fadeout to 0 volume
94 STREAM_COMMANDI(OMS_STRM_FADEOUT);
95 STREAM_TIMER(evt.parm.f);
96 break;
97
98 case OMS_STRM_FADEIN:
99 // fade in to volume m_maxvol
100 STREAM_COMMANDI(OMS_STRM_FADEIN);
101 STREAM_TIMER(evt.parm.f);
102 break;
103
104 case OMS_STRM_STOP:
105 STREAM_COMMANDI(OMS_STRM_STOP);
106 m_stream.Stop();
107 break;
108
109 case OMS_STRM_FREE:
110 STREAM_COMMANDI(OMS_STRM_FREE);
111 m_stream.Close();
112 break;
113
114 case OMS_STRM_PLAY:
115 // process queue events.
116 if (!m_q.recv(&evt2)) {
117 Int3();
118 }
119 STREAM_COMMANDI(OMS_STRM_PLAY, evt2.parm.i);
120 m_stream.SetLoopCount(evt2.parm.i);
121 m_stream.SetVolume(evt.parm.f);
122 m_stream.Play();
123 break;
124
125 case OMS_STRM_SWITCH:
126 STREAM_COMMANDP(OMS_STRM_SWITCH, evt.parm.p);
127 m_stream.Stop(true, &m_data.i);
128 mprintf(0, "%d-%d ", m_data.i, m_stream.State());

Callers

nothing calls this directly

Calls 7

SetLoopCountMethod · 0.80
StateMethod · 0.80
recvMethod · 0.45
StopMethod · 0.45
CloseMethod · 0.45
SetVolumeMethod · 0.45
PlayMethod · 0.45

Tested by

no test coverage detected