[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-dev
Subject: [datatype-dev] CN: Fix for full screen share button crash on Mac
From: Christina Bailey <cdunn () real ! com>
Date: 2008-01-30 18:18:41
Message-ID: 47A0BF81.30709 () real ! com
[Download RAW message or body]
Reviewed by Henry, checked into HEAD and Atlas310.
thanks,
christina
Christina Bailey wrote:
> 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
>
_______________________________________________
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