[Bug 33384] Basic WPF applications using .NET 3.5 WPF fails to handle images (windowscodecs {7543696a-bc8d-46b0-5f81-8d95728972be} = IMILBitmapSource unsupported)
wine-bugs at winehq.org
wine-bugs at winehq.org
Sun Apr 14 18:13:26 CDT 2013
http://bugs.winehq.org/show_bug.cgi?id=33384
--- Comment #8 from Anastasius Focht <focht at gmx.net> 2013-04-14 18:13:26 CDT ---
Hello folks,
well it seems I was wrong on "exact" the same parameters.
It seems there is at least another deviation in the interface.
For testing I added IMILBitmapSource to .idl file and allowed
BitmapImpl_QueryInterface to return BitmapImpl for IID_IMILBitmapSource.
This gets the app a little farther only to run into:
--- snip ---
...
002b:CALL wpfgfx_v0300.MilResource_SendCommandBitmapSource(<unknown, check
return>) ret=044123d7
002b:trace:wincodecs:BitmapImpl_GetPixelFormat (0x1b2de8,0x32dbc4)
002b:trace:wincodecs:BitmapImpl_AddRef (0x1b2de8) refcount=5
002b:trace:wincodecs:BitmapImpl_GetSize (0x1b2de8,0x32dbb4,0x32dbb0)
002b:trace:wincodecs:BitmapImpl_GetResolution (0x1b2de8,0x32dc40,0x32dc38)
002b:fixme:wer:WerRegisterMemoryBlock (0x5418ebf0 6144) stub
002b:fixme:wer:WerRegisterMemoryBlock (0x5418ebe8 4) stub
002b:trace:wincodecs:BitmapImpl_Release (0x1b2de8) refcount=4
002b:RET
wpfgfx_v0300.MilResource_SendCommandBitmapSource(00000010,001b2de8,00000001,00000001,0018b1d0)
retval=80070216 ret=044123d7
...
002b:trace:seh:raise_exception code=e0434f4d flags=1 addr=0x7b83aabb
ip=7b83aabb tid=002b
002b:trace:seh:raise_exception info[0]=80131516
002b:trace:seh:raise_exception eax=7b826891 ebx=7b8b96b0 ecx=80131516
edx=0032db38 esi=0032dbc0 edi=00133148
002b:trace:seh:raise_exception ebp=0032db78 esp=0032db14 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00000283
002b:trace:seh:call_stack_handlers calling handler at 0x79f908a2 code=e0434f4d
flags=1
...
0033:err:eventlog:ReportEventW L"clr20r3"
0033:err:eventlog:ReportEventW L"winetest.exe"
0033:err:eventlog:ReportEventW L"1.0.0.0"
0033:err:eventlog:ReportEventW L"5168fd72"
0033:err:eventlog:ReportEventW L"presentationcore"
0033:err:eventlog:ReportEventW L"3.0.0.0"
0033:err:eventlog:ReportEventW L"488f140b"
0033:err:eventlog:ReportEventW L"480"
0033:err:eventlog:ReportEventW L"29"
0033:err:eventlog:ReportEventW L"system.overflowexception"
0033:err:eventlog:ReportEventW L"NIL"
--- snip ---
Managed backtrace:
--- snip ---
System.OverflowException: The image data generated an overflow during
processing. ---> System.ArithmeticException: Overflow or underflow in the
arithmetic operation.
--- End of inner exception stack trace ---
at
System.Windows.Media.Composition.DUCE.Channel.SendCommandBitmapSource(ResourceHandle
imageHandle, BitmapSourceSafeMILHandle pBitmapSource, Boolean shareBitmap,
Boolean systemMemoryBitmap)
at
System.Windows.Media.Imaging.BitmapSource.UpdateBitmapSourceResource(Channel
channel, Boolean skipOnChannelCheck)
at System.Windows.Media.Imaging.BitmapSource.UpdateResource(Channel channel,
Boolean skipOnChannelCheck)
at System.Windows.Media.Imaging.BitmapSource.AddRefOnChannelCore(Channel
channel)
at
System.Windows.Media.Imaging.BitmapSource.System.Windows.Media.Composition.DUCE.IResource.AddRefOnChannel(Channel
channel)
at
System.Windows.Media.RenderData.System.Windows.Media.Composition.DUCE.IResource.AddRefOnChannel(Channel
channel)
at System.Windows.UIElement.RenderContent(RenderContext ctx, Boolean
isOnChannel)
at System.Windows.Media.Visual.UpdateContent(RenderContext ctx,
VisualProxyFlags flags, Boolean isOnChannel)
at System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
at System.Windows.Media.Visual.UpdateChildren(RenderContext ctx,
ResourceHandle handle)
at System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
at System.Windows.Media.Visual.UpdateChildren(RenderContext ctx,
ResourceHandle handle)
at System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
at System.Windows.Media.Visual.UpdateChildren(RenderContext ctx,
ResourceHandle handle)
at System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
at System.Windows.Media.Visual.UpdateChildren(RenderContext ctx,
ResourceHandle handle)
at System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
at System.Windows.Media.Visual.UpdateChildren(RenderContext ctx,
ResourceHandle handle)
at System.Windows.Media.Visual.RenderRecursive(RenderContext ctx)
at System.Windows.Media.Visual.Render(RenderContext ctx, UInt32 childIndex)
at System.Windows.Media.CompositionTarget.Compile(Channel channel)
at
System.Windows.Media.CompositionTarget.System.Windows.Media.ICompositionTarget.Render(Boolean
inResize, Channel channel)
at System.Windows.Media.MediaContext.Render(ICompositionTarget
resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object
resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object
resizedCompositionTarget)
at System.Windows.Media.MediaContext.Resize(ICompositionTarget
resizedCompositionTarget)
at System.Windows.Interop.HwndTarget.OnResize()
--- snip ---
After a bit of debugging it seems the pixel format is not correct.
The overflow happens when .NET MIL looks at BitmapImpl_GetPixelFormat() data.
It seems IMILBitmapSource::GetPixelFormat is expected as integer value (enum?),
not a GUID.
The code verifies the parameter value range to 0..0x2c and throws the overflow
error > 0x2c.
I don't have the WIC SDK but maybe there exist an enumerator for pixel formats
(which maps to GUIDs and vise versa).
So we need a separate impl to cope with different GetPixelFormat() at least.
Still BitmapImpl code could be reused.
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list