diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index 4834218e48a..a0e7c040917 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -1739,36 +1739,34 @@ nsObjectFrame::Paint(nsIPresContext* aPresContext, return rv; // done with printing } - -// --------------------------------------------------------------------------- // Screen painting code - #if defined (XP_MAC) - // delegate all painting to the plugin instance. - if ((NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) && (nsnull != mInstanceOwner)) { - mInstanceOwner->Paint(aDirtyRect); - } + // delegate all painting to the plugin instance. + if ((NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) && (nsnull != mInstanceOwner)) + mInstanceOwner->Paint(aDirtyRect); #elif defined (XP_PC) - if (NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) - { - nsIPluginInstance * inst; - if (NS_OK == GetPluginInstance(inst)) - { - NS_RELEASE(inst); - // Look if it's windowless - nsPluginWindow * window; - mInstanceOwner->GetWindow(window); - if (window->type == nsPluginWindowType_Drawable) - { - PRUint32 hdc; - aRenderingContext.RetrieveCurrentNativeGraphicData(&hdc); - mInstanceOwner->Paint(aDirtyRect, hdc); - } + if (NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) { + nsIPluginInstance * inst; + if (NS_OK == GetPluginInstance(inst)) { + // Look if it's windowless + nsPluginWindow * window; + mInstanceOwner->GetWindow(window); + + if (window->type == nsPluginWindowType_Drawable) { + PRUint32 hdc; + aRenderingContext.RetrieveCurrentNativeGraphicData(&hdc); + if(NS_REINTERPRET_CAST(PRUint32, window->window) != hdc) { + window->window = NS_REINTERPRET_CAST(nsPluginPort*, hdc); + inst->SetWindow(window); } + mInstanceOwner->Paint(aDirtyRect, hdc); + } + NS_RELEASE(inst); } + } #endif /* !XP_MAC */ - DO_GLOBAL_REFLOW_COUNT_DSP("nsObjectFrame", &aRenderingContext); - return NS_OK; + DO_GLOBAL_REFLOW_COUNT_DSP("nsObjectFrame", &aRenderingContext); + return NS_OK; } NS_IMETHODIMP diff --git a/layout/html/base/src/nsObjectFrame.cpp b/layout/html/base/src/nsObjectFrame.cpp index 4834218e48a..a0e7c040917 100644 --- a/layout/html/base/src/nsObjectFrame.cpp +++ b/layout/html/base/src/nsObjectFrame.cpp @@ -1739,36 +1739,34 @@ nsObjectFrame::Paint(nsIPresContext* aPresContext, return rv; // done with printing } - -// --------------------------------------------------------------------------- // Screen painting code - #if defined (XP_MAC) - // delegate all painting to the plugin instance. - if ((NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) && (nsnull != mInstanceOwner)) { - mInstanceOwner->Paint(aDirtyRect); - } + // delegate all painting to the plugin instance. + if ((NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) && (nsnull != mInstanceOwner)) + mInstanceOwner->Paint(aDirtyRect); #elif defined (XP_PC) - if (NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) - { - nsIPluginInstance * inst; - if (NS_OK == GetPluginInstance(inst)) - { - NS_RELEASE(inst); - // Look if it's windowless - nsPluginWindow * window; - mInstanceOwner->GetWindow(window); - if (window->type == nsPluginWindowType_Drawable) - { - PRUint32 hdc; - aRenderingContext.RetrieveCurrentNativeGraphicData(&hdc); - mInstanceOwner->Paint(aDirtyRect, hdc); - } + if (NS_FRAME_PAINT_LAYER_FOREGROUND == aWhichLayer) { + nsIPluginInstance * inst; + if (NS_OK == GetPluginInstance(inst)) { + // Look if it's windowless + nsPluginWindow * window; + mInstanceOwner->GetWindow(window); + + if (window->type == nsPluginWindowType_Drawable) { + PRUint32 hdc; + aRenderingContext.RetrieveCurrentNativeGraphicData(&hdc); + if(NS_REINTERPRET_CAST(PRUint32, window->window) != hdc) { + window->window = NS_REINTERPRET_CAST(nsPluginPort*, hdc); + inst->SetWindow(window); } + mInstanceOwner->Paint(aDirtyRect, hdc); + } + NS_RELEASE(inst); } + } #endif /* !XP_MAC */ - DO_GLOBAL_REFLOW_COUNT_DSP("nsObjectFrame", &aRenderingContext); - return NS_OK; + DO_GLOBAL_REFLOW_COUNT_DSP("nsObjectFrame", &aRenderingContext); + return NS_OK; } NS_IMETHODIMP