37 |
* thread within the voice class). |
* thread within the voice class). |
38 |
*/ |
*/ |
39 |
int DiskThread::OrderNewStream(Stream::reference_t* pStreamRef, gig::Sample* pSample, unsigned long SampleOffset) { |
int DiskThread::OrderNewStream(Stream::reference_t* pStreamRef, gig::Sample* pSample, unsigned long SampleOffset) { |
40 |
dmsg(("Disk Thread: new stream ordered\n")); |
dmsg(4,("Disk Thread: new stream ordered\n")); |
41 |
if (CreationQueue->write_space() < 1) return -1; |
if (CreationQueue->write_space() < 1) return -1; |
42 |
|
|
43 |
pStreamRef->State = Stream::state_active; |
pStreamRef->State = Stream::state_active; |
59 |
* thread within the voice class). |
* thread within the voice class). |
60 |
*/ |
*/ |
61 |
int DiskThread::OrderDeletionOfStream(Stream::reference_t* pStreamRef) { |
int DiskThread::OrderDeletionOfStream(Stream::reference_t* pStreamRef) { |
62 |
dmsg(("Disk Thread: stream deletion ordered\n")); |
dmsg(4,("Disk Thread: stream deletion ordered\n")); |
63 |
if (DeletionQueue->write_space() < 1) return -1; |
if (DeletionQueue->write_space() < 1) return -1; |
64 |
|
|
65 |
delete_command_t cmd; |
delete_command_t cmd; |
85 |
* @returns pointer to created stream object, NULL otherwise |
* @returns pointer to created stream object, NULL otherwise |
86 |
*/ |
*/ |
87 |
Stream* DiskThread::AskForCreatedStream(Stream::OrderID_t StreamOrderID) { |
Stream* DiskThread::AskForCreatedStream(Stream::OrderID_t StreamOrderID) { |
88 |
dmsg(("Disk Thread: been asked if stream already created, OrderID=%x ", StreamOrderID)); |
dmsg(4,("Disk Thread: been asked if stream already created, OrderID=%x ", StreamOrderID)); |
89 |
Stream* pStream = pCreatedStreams[StreamOrderID]; |
Stream* pStream = pCreatedStreams[StreamOrderID]; |
90 |
if (pStream) { dmsg(("(yes created)")) } |
if (pStream) { dmsg(4,("(yes created)")) } |
91 |
else { dmsg(("(no not yet created)")) } |
else { dmsg(4,("(no not yet created)")) } |
92 |
pCreatedStreams[StreamOrderID] = NULL; // free the slot for a new order |
pCreatedStreams[StreamOrderID] = NULL; // free the slot for a new order |
93 |
return pStream; |
return pStream; |
94 |
} |
} |
122 |
} |
} |
123 |
|
|
124 |
int DiskThread::Main() { |
int DiskThread::Main() { |
125 |
dmsg(("Disk thread running\n")); |
dmsg(3,("Disk thread running\n")); |
126 |
while (true) { |
while (true) { |
127 |
IsIdle = true; // will be set to false if a stream got filled |
IsIdle = true; // will be set to false if a stream got filled |
128 |
|
|
167 |
} |
} |
168 |
} |
} |
169 |
if (!newstream) { |
if (!newstream) { |
170 |
dmsg(("No unused stream found (OrderID:%x) - report if this happens, this is a bug!\n", Command.pStreamRef->OrderID)); |
dmsg(1,("No unused stream found (OrderID:%x) - report if this happens, this is a bug!\n", Command.pStreamRef->OrderID)); |
171 |
return; |
return; |
172 |
} |
} |
173 |
dmsg(("new Stream launched by disk thread (OrderID:%x,StreamHandle:%x)\n", Command.pStreamRef->OrderID, Command.pStreamRef->hStream)); |
dmsg(4,("new Stream launched by disk thread (OrderID:%x,StreamHandle:%x)\n", Command.pStreamRef->OrderID, Command.pStreamRef->hStream)); |
174 |
newstream->Launch(Command.pStreamRef, Command.pSample, Command.SampleOffset); |
newstream->Launch(Command.pStreamRef, Command.pSample, Command.SampleOffset); |
175 |
pCreatedStreams[Command.pStreamRef->OrderID] = newstream; |
pCreatedStreams[Command.pStreamRef->OrderID] = newstream; |
176 |
} |
} |