Ignore:
Timestamp:
Jun 9, 2001, 4:50:26 PM (24 years ago)
Author:
sandervl
Message:

reference count (window + class objects) rewrite

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/dc.cpp

    r5899 r5935  
    1 /* $Id: dc.cpp,v 1.108 2001-06-03 12:02:26 sandervl Exp $ */
     1/* $Id: dc.cpp,v 1.109 2001-06-09 14:50:16 sandervl Exp $ */
    22
    33/*
     
    450450   }
    451451   else wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(pHps->hwnd);
    452    return changePageXForm(wnd, pHps, pValue, x, y, pPrev);
     452   BOOL ret = changePageXForm(wnd, pHps, pValue, x, y, pPrev);
     453   if(wnd) RELEASE_WNDOBJ(wnd);
     454   return ret;
    453455}
    454456//******************************************************************************
     
    462464   }
    463465   else wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(pHps->hwnd);
    464    return setPageXForm(wnd, pHps);
     466   BOOL ret = setPageXForm(wnd, pHps);
     467   if(wnd) RELEASE_WNDOBJ(wnd);
     468   return ret;
    465469}
    466470//******************************************************************************
     
    476480   if(wnd) {
    477481      removeClientArea(wnd, pHps);
     482      RELEASE_WNDOBJ(wnd);
    478483   }
    479484}
     
    490495   if(wnd) {
    491496      selectClientArea(wnd, pHps);
     497      RELEASE_WNDOBJ(wnd);
    492498   }
    493499}
     
    505511      if(pHps->isClient)
    506512          selectClientArea(wnd, pHps);
     513      RELEASE_WNDOBJ(wnd);
    507514   }
    508515}
     
    521528   }
    522529   else wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(pHps->hwnd);
    523    return clientHeight(wnd, hwnd, pHps);
     530   LONG ret = clientHeight(wnd, hwnd, pHps);
     531   if(wnd) RELEASE_WNDOBJ(wnd);
     532   return ret;
    524533}
    525534//******************************************************************************
     
    533542   }
    534543   else wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(pHps->hwnd);
    535    return setMapMode(wnd, pHps, mode);
     544   int ret = setMapMode(wnd, pHps, mode);
     545   if(wnd) RELEASE_WNDOBJ(wnd);
     546   return ret;
    536547}
    537548//******************************************************************************
     
    673684            {
    674685                dprintf (("USER32: BeginPaint %x invalid parameter %x", hWnd, lpps));
     686                RELEASE_WNDOBJ(wnd);
    675687                SetLastError(ERROR_INVALID_PARAMETER_W);
    676688                return (HDC)NULLHANDLE;
     
    685697        {
    686698            dprintf (("USER32: BeginPaint %x invalid parameter %x", hWnd, lpps));
     699            RELEASE_WNDOBJ(wnd);
    687700            SetLastError(ERROR_INVALID_PARAMETER_W);
    688701            return (HDC)NULLHANDLE;
     
    773786        lpps->rcPaint.right = lpps->rcPaint.left = 0;
    774787    }
     788    RELEASE_WNDOBJ(wnd);
    775789
    776790    SetLastError(0);
     
    814828
    815829exit:
     830    if(wnd) RELEASE_WNDOBJ(wnd);
    816831    SetLastError(0);
    817832    return TRUE;
     
    850865            dprintf2(("ReleaseDC: CS_OWNDC, not released"));
    851866        }
     867        RELEASE_WNDOBJ(wnd);
    852868    }
    853869
     
    928944            //TODO: intersect/exclude clip region?
    929945            dprintf (("User32: GetDCEx hwnd %x (%x %x) -> wnd %x hdc %x", hwnd, hrgn, flags, wnd, hps));
     946
     947            RELEASE_WNDOBJ(wnd);
    930948            return (HDC)hps;
    931949        }
     
    10581076
    10591077    dprintf (("User32: GetDCEx hwnd %x (%x %x) -> hdc %x", hwnd, hrgn, flags, pHps->hps));
     1078    RELEASE_WNDOBJ(wnd);
     1079
    10601080    return (HDC)pHps->hps;
    10611081
     
    10801100        O32_DeleteObject (pHps->nullBitmapHandle);
    10811101    }
     1102    if(wnd) RELEASE_WNDOBJ(wnd);
    10821103    SetLastError(ERROR_INVALID_PARAMETER_W);
    10831104    return NULL;
     
    13231344        SetLastError(ERROR_INVALID_PARAMETER_W);
    13241345    }
     1346    if(wnd) RELEASE_WNDOBJ(wnd);
    13251347    return (success);
    13261348}
     
    13581380//    if(!WinIsWindowShowing(wnd->getOS2FrameWindowHandle()) || !WinIsWindowShowing(wnd->getOS2WindowHandle())) {
    13591381//        dprintf(("UpdateWindow: window not showing %d/%d", WinIsWindowShowing(wnd->getOS2FrameWindowHandle()), WinIsWindowShowing(wnd->getOS2WindowHandle()) ));
     1382//        RELEASE_WNDOBJ(wnd);
    13601383//        return FALSE;
    13611384//    }
     
    13711394    }
    13721395#endif
     1396    RELEASE_WNDOBJ(wnd);
    13731397    return rc;
    13741398}
     
    15511575    if (lComplexity == RGN_ERROR)
    15521576    {
     1577        RELEASE_WNDOBJ(window);
    15531578        return ERROR_W;
    15541579    }
     
    15761601                if(!child) {
    15771602                    dprintf(("ERROR: ScrollWindowEx, child %x not found", hwnd));
     1603                    RELEASE_WNDOBJ(window);
    15781604                    return 0;
    15791605                }
     
    15841610                     child->ScrollWindow(dx, orgdy);
    15851611                }
    1586                 hwndChild = GetWindow(hwndChild, GW_HWNDNEXT_W);
     1612                RELEASE_WNDOBJ(child);
     1613                hwndChild = GetWindow(hwndChild, GW_HWNDNEXT_W);       
    15871614            }
    15881615            dprintf(("***ScrollWindowEx: Scroll child windows DONE"));
     
    16161643       if (rc == FALSE)
    16171644       {
     1645          RELEASE_WNDOBJ(window);
    16181646          return (0);
    16191647       }
     
    16371665    }
    16381666
     1667    RELEASE_WNDOBJ(window);
    16391668    return (regionType);
    16401669}
     
    16431672BOOL WIN32API ScrollWindow(HWND hwnd, int dx, int dy, const RECT *pScroll, const RECT *pClip)
    16441673{
    1645  Win32BaseWindow *window;
    1646 
    1647     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    1648     if(!window) {
    1649         dprintf(("ScrollWindow, window %x not found", hwnd));
    1650         return 0;
    1651     }
    16521674    dprintf(("ScrollWindow %x %d %d %x %x", hwnd, dx, dy, pScroll, pClip));
    16531675    return (ERROR_W != ScrollWindowEx(hwnd, dx, dy, pScroll, pClip, 0, NULL,
Note: See TracChangeset for help on using the changeset viewer.