diff --git a/mythtv/libs/libmythtv/mythplayer.h b/mythtv/libs/libmythtv/mythplayer.h
index 7fe3bb3..93870e7 100644
a
|
b
|
class MTV_PUBLIC MythPlayer |
348 | 348 | frm_pos_map_t &durMap); |
349 | 349 | |
350 | 350 | // OSD locking for TV class |
351 | | bool TryLockOSD(void) { return osdLock.tryLock(50); } |
| 351 | bool TryLockOSD(int n) { return osdLock.tryLock(n); } |
352 | 352 | void LockOSD(void) { osdLock.lock(); } |
353 | 353 | void UnlockOSD(void) { osdLock.unlock(); } |
354 | 354 | |
diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
index 5460cfa..5132d9c 100644
a
|
b
|
void TV::HandleEndOfRecordingExitPromptTimerEvent(void) |
3518 | 3518 | } |
3519 | 3519 | |
3520 | 3520 | PlayerContext *mctx = GetPlayerReadLock(0, __FILE__, __LINE__); |
| 3521 | MythPlayer *player = mctx->player; |
| 3522 | // Potential deadlock if this is called while VideoOut |
| 3523 | // is being initialized. |
| 3524 | if (!player->TryLockOSD(50)) |
| 3525 | { |
| 3526 | ReturnPlayerLock(mctx); |
| 3527 | return; |
| 3528 | } |
| 3529 | |
3521 | 3530 | OSD *osd = GetOSDLock(mctx); |
3522 | 3531 | if (osd && osd->DialogVisible()) |
3523 | 3532 | { |
3524 | 3533 | ReturnOSDLock(mctx, osd); |
| 3534 | player->UnlockOSD(); |
3525 | 3535 | ReturnPlayerLock(mctx); |
3526 | 3536 | return; |
3527 | 3537 | } |
3528 | 3538 | ReturnOSDLock(mctx, osd); |
| 3539 | player->UnlockOSD(); |
3529 | 3540 | |
3530 | 3541 | bool do_prompt; |
3531 | 3542 | mctx->LockDeletePlayer(__FILE__, __LINE__); |