Picasa2- slideshow mode fixes [patch #1]

Matthew Mastracci matt at aclaro.com
Sun Mar 6 01:55:29 CST 2005


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.
>




More information about the wine-devel mailing list