[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-dev
Subject: [datatype-dev] CR: Fix for full screen share button crash on Mac
From: Christina Bailey <cdunn () real ! com>
Date: 2008-01-29 23:12:13
Message-ID: 479FB2CD.9020401 () real ! com
[Download RAW message or body]
Fix for: Bug 211882 Mac/ share button in fullscreen crashes in Safari only
Overview: Ignore paint messages during tear down of Flash instance to
avoid bad access exception in Safari.
In full screen, if the share button is hit, it will exit out of full
screen, destroying all of the full screen
objects (UI and postroll flash). During tear down the attached site
becomes invalid.
This is a quick fix for this problem, maybe. I think the real problem
may be in the mac site code,
not calling DetachSite soon enough. Crash occurs because of an invalid
access to the attached site.
Diff:
Index: flash_guest_player_ns.cpp
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/flash_guest_player_ns.cpp,v
retrieving revision 1.27.2.22
diff -w -u -5 -r1.27.2.22 flash_guest_player_ns.cpp
--- flash_guest_player_ns.cpp 28 Jan 2008 03:37:06 -0000 1.27.2.22
+++ flash_guest_player_ns.cpp 29 Jan 2008 22:57:57 -0000
@@ -237,10 +237,11 @@
#endif
, m_pFileSystemManager(NULL)
, m_ulPacingInterval(FLASH_PACING_INTERVAL)
, m_ulReadPacingInterval(FLASH_READ_PACING_INTERVAL)
, m_bTerminated(FALSE)
+ , m_bTerminating(FALSE)
, m_pOutstandingInvalidRect(NULL)
, m_bStreamDone(FALSE)
, m_bIssueCallbackBetweenReads(FALSE)
, m_dStreamType(NP_NORMAL)
, m_ulFileOffsetPending(INVALID_FILE_OFFSET)
@@ -324,10 +325,12 @@
// printf("CFlashGuestPlayerNS::Initialize\n");
#endif // _MAC_UNIX
HX_RESULT retVal = HXR_FAIL;
+ m_bTerminating = FALSE;
+
if (pContext)
{
// Enable logging
HX_ENABLE_LOGGING(pContext);
// Save the context
@@ -1400,10 +1403,12 @@
if (m_lFlashRefCount == 0)
{
return HXR_OK;
}
+ m_bTerminating = TRUE;
+
HXLOGL4(HXLOG_FPHR, "CFlashGuestPlayerNS::Terminate()");
// Close the player
Close();
// Set the player state back to HXGUEST_STATE_PLAYER_CREATED
@@ -2423,11 +2428,12 @@
npp, pInvalidRect, (pInvalidRect ? pInvalidRect->left : 0),
(pInvalidRect ? pInvalidRect->top : 0), (pInvalidRect ?
pInvalidRect->right : 0),
(pInvalidRect ? pInvalidRect->bottom : 0));
HXBOOL bHandled = FALSE;
- if (m_PluginFuncs.event == NULL)
+ // If we are destroying the instance, exit gracefully now
+ if (m_PluginFuncs.event == NULL || m_bTerminating)
{
return FALSE;
}
m_pOutstandingInvalidRect = pInvalidRect;
Index: pub/flash_guest_player_ns.h
===================================================================
RCS file: /cvsroot/datatype/flash/flashhost/pub/flash_guest_player_ns.h,v
retrieving revision 1.14.2.9
diff -w -u -5 -r1.14.2.9 flash_guest_player_ns.h
--- pub/flash_guest_player_ns.h 30 Nov 2007 23:24:45 -0000 1.14.2.9
+++ pub/flash_guest_player_ns.h 29 Jan 2008 22:57:57 -0000
@@ -274,10 +274,11 @@
HXxWindow* m_pWindow;
HXxWindow m_LastSetHxWindow;
HXxRect m_WindowSubHxRect;
HXBOOL m_bWindowSubHxRectSet;
HXBOOL m_bTerminated;
+ HXBOOL m_bTerminating;
HXBOOL m_bStreamDone;
HXBOOL m_bIssueCallbackBetweenReads;
IHXBuffer* m_pOffscreenBuffer;
IHXMutex* m_pMutex;
IHXFileStat* m_pFileStat;
_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic