Woohoo! With my patch from before and some extra hacking, I managed to get the slideshow working in Picasa by faking out some DirectDraw capabilities. Apparently, it requires the presence of the DDCAPS_OVERLAY and DDCAPS_OVERLAYSTRETCH to do its slideshow properly (and aborts silently if they aren't there).
Adding the fake capabilities lets the slideshow run, though the images aren't stretched to the entire size of the window unless the slideshow overlay is showing at the bottom. It's hard to describe and a little jarring when you're interacting with the slideshow. Not sure if this is because of the lack of true overlay surface support, but this message seems to indicate so:
trace:ddraw:Main_DirectDraw_CreateSurface App didn't request a valid surface type - assuming offscreenplain
I don't know if I should submit this as part of a patch, since it doesn't implement the functionality. Here is the change, for those interested:
Index: dlls/ddraw/ddraw/user.c =================================================================== RCS file: /home/wine/wine/dlls/ddraw/ddraw/user.c,v retrieving revision 1.22 diff -u -r1.22 user.c --- dlls/ddraw/ddraw/user.c 8 Sep 2004 01:50:37 -0000 1.22 +++ dlls/ddraw/ddraw/user.c 6 Mar 2005 07:04:29 -0000 @@ -143,7 +143,7 @@ #define BLIT_CAPS (DDCAPS_BLT | DDCAPS_BLTCOLORFILL | DDCAPS_BLTDEPTHFILL \ | DDCAPS_BLTSTRETCH | DDCAPS_CANBLTSYSMEM | DDCAPS_CANCLIP \ | DDCAPS_CANCLIPSTRETCHED | DDCAPS_COLORKEY \ - | DDCAPS_COLORKEYHWASSIST) + | DDCAPS_COLORKEYHWASSIST | DDCAPS_OVERLAY | DDCAPS_OVERLAYSTRETCH) #define CKEY_CAPS (DDCKEYCAPS_DESTBLT | DDCKEYCAPS_SRCBLT) #define FX_CAPS (DDFXCAPS_BLTALPHA | DDFXCAPS_BLTMIRRORLEFTRIGHT \ | DDFXCAPS_BLTMIRRORUPDOWN | DDFXCAPS_BLTROTATION90 \
Matthew Mastracci wrote:
I've been trying to get the slideshow mode in Picasa2 to work, but it seems like it's relying on IDirectDrawSurface->Lock() to return DDERR_SURFACEBUSY if the surface is already locked. If this call doesn't return the error, it seems to keep hammering the function until it does. It then proceeds to hit a stack overflow condition somehow and dies. :)
I think it's a bug in Picasa, but my ddraw-surface-lock.diff patch in wine-patches fixes this behaviour (but not the feature, unfortunately).
Note that now the slideshow mode now just terminates without error. I'll keep on looking to see what's happening.
Matt.
Woo, go Matthew!
On Sun, 06 Mar 2005 00:55:29 -0700, Matthew Mastracci wrote:
I don't know if I should submit this as part of a patch, since it doesn't implement the functionality. Here is the change, for those interested:
No no, please do. Better stubs are definitely improvements, even if they aren't implementing the functionality.
Mike Hearn wrote:
Woo, go Matthew!
On Sun, 06 Mar 2005 00:55:29 -0700, Matthew Mastracci wrote:
I don't know if I should submit this as part of a patch, since it doesn't implement the functionality. Here is the change, for those interested:
No no, please do. Better stubs are definitely improvements, even if they aren't implementing the functionality.
Okay - I submitted that last one as ddraw-overlay-caps.diff to wine-patches.
I've added another screenshot of Picasa's timeline and slideshow modes. I have a feeling that adding overlay stretch support will make those modes fill the full screen, rather than what might be a 640x480 surface in the center.
More screenshot goodness:
http://www.grack.com/news/MorePicasa2-SlideshowandT.html
Matt.