Ignore:
Timestamp:
Oct 17, 2001, 10:08:52 AM (24 years ago)
Author:
sandervl
Message:

colorfill fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ddraw/OS2SURFACE.CPP

    r6982 r7084  
    1 /* $Id: OS2SURFACE.CPP,v 1.37 2001-10-10 14:40:45 sandervl Exp $ */
     1/* $Id: OS2SURFACE.CPP,v 1.38 2001-10-17 08:08:52 sandervl Exp $ */
    22
    33/*
     
    23012301  delete pIRectDest;
    23022302
    2303   if (NULL!=lpSrcRect)
    2304   {
     2303  //src == NULL for colorfill
     2304  if(src)
     2305  {
     2306   if (NULL!=lpSrcRect)
     2307   {
    23052308#ifdef RA_HACK
    23062309    // Same as for dest rectangle now for src
     
    23532356    memcpy(&SrcRect,lpSrcRect,sizeof(RECT) );
    23542357#endif
    2355   }
    2356   else
    2357   {
     2358   }
     2359   else
     2360   {
    23582361    pIRectSrc = new DDRectangle( 0, 0, src->width, src->height);
    23592362    SrcRect.top    = 0;
     
    23612364    SrcRect.bottom = src->height;
    23622365    SrcRect.right  = src->width;
    2363   }
    2364 
    2365   if(src->fLocked)
    2366   {
     2366   }
     2367 
     2368   if(src->fLocked)
     2369   {
    23672370    if (NULL==lpSrcRect)
    23682371    {
     
    23952398      return(DDERR_SURFACEBUSY);
    23962399    }
    2397   }
    2398   delete pIRectSrc;
     2400   }
     2401   delete pIRectSrc;
     2402  } //if(src)
    23992403
    24002404  if(dest->diveBufNr == DIVE_BUFFER_SCREEN &&
     
    25302534                  {
    25312535                      //TODO: This is not correct for stretching blits
    2532                       newsrc.left   = SrcRect.left + (newdest.left - DestRect.left);
    2533                       newsrc.top    = SrcRect.top + (newdest.top - DestRect.top);
    2534                       newsrc.right  = newsrc.left + RECT_WIDTH(&newdest);
    2535                       newsrc.bottom = newsrc.top + RECT_HEIGHT(&newdest);
    2536 
     2536                      if(lpSrcRect) {
     2537                          newsrc.left   = SrcRect.left + (newdest.left - DestRect.left);
     2538                          newsrc.top    = SrcRect.top + (newdest.top - DestRect.top);
     2539                          newsrc.right  = newsrc.left + RECT_WIDTH(&newdest);
     2540                          newsrc.bottom = newsrc.top + RECT_HEIGHT(&newdest);
     2541                      }
    25372542//                      DDSURFACEDESC2 surfdesc = {0};
    25382543//                      SurfLock4(dest, &newdest, &surfdesc, 0, 0);
    2539 
    2540                       ret = SurfDoBlt(This, &newdest, lpDDSrcSurface, &newsrc, dwFlags, lpDDBltFx);
     2544   
     2545                      ret = SurfDoBlt(This, &newdest, lpDDSrcSurface, (lpSrcRect) ? &newsrc : NULL, dwFlags, lpDDBltFx);
    25412546                      if(ret != DD_OK) {
    25422547                          break;
     
    25602565  }
    25612566doblit:
    2562   return SurfDoBlt(This, &DestRect, lpDDSrcSurface, &SrcRect, dwFlags, lpDDBltFx);
     2567  return SurfDoBlt(This, &DestRect, lpDDSrcSurface, (lpSrcRect) ? &SrcRect : NULL, dwFlags, lpDDBltFx);
    25632568}
    25642569//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.