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__); |