234 Control control = iControllable.getControl(SEEK_CONTROL); |
234 Control control = iControllable.getControl(SEEK_CONTROL); |
235 if (control != null) |
235 if (control != null) |
236 { |
236 { |
237 // start new seak thread, thread will notify iWaitObject |
237 // start new seak thread, thread will notify iWaitObject |
238 // when completed |
238 // when completed |
239 (new SeekThread(iWaitObject, |
239 // seek thread will open a new connection in case of http, |
240 (SeekControl)control)).start(); |
240 // and notify here so that read thread is started |
|
241 |
|
242 try |
|
243 { |
|
244 synchronized (iWaitObject) |
|
245 { |
|
246 Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader:: read() before creating seekthread thread id = "+Thread.currentThread().getName()); |
|
247 (new SeekThread(iWaitObject, |
|
248 (SeekControl)control)).start(); |
|
249 Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader::read() - after seekthread before wait"); |
|
250 |
|
251 iWaitObject.wait(); |
|
252 Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader::read() - after seekthread after wait"); |
|
253 } |
|
254 } |
|
255 catch (InterruptedException ex) |
|
256 { |
|
257 Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader::read() - InterruptedException exception"); |
|
258 } |
|
259 |
|
260 t1 = new Thread(this); |
|
261 t1.start(); |
|
262 |
|
263 |
|
264 |
241 } |
265 } |
242 else |
266 else |
243 { |
267 { |
244 // stream is not seekable, so informing native object |
268 // stream is not seekable, so informing native object |
|
269 Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader:: read() before _write "); |
245 _write(iHandle, iEventSourceHandle, new byte[ 0 ], 0, |
270 _write(iHandle, iEventSourceHandle, new byte[ 0 ], 0, |
246 ERR_EOF, iPlayerHandle); |
271 ERR_EOF, iPlayerHandle); |
247 } |
272 } |
248 } |
273 } |
249 else if (iIsActive) |
274 else if (iIsActive) |