Moved DC origin into device-specific structure.
Fixed handling of DC origin in X11 driver.

diff --git a/dlls/ttydrv/wnd.c b/dlls/ttydrv/wnd.c
index 7915d30..96e5d34 100644
--- a/dlls/ttydrv/wnd.c
+++ b/dlls/ttydrv/wnd.c
@@ -45,7 +45,7 @@
     HWND hwndLinkAfter;
 
 #ifdef WINE_CURSES
-    WND *wndPtr = WIN_FindWndPtr( hwnd );
+    WND *wndPtr = WIN_GetPtr( hwnd );
     WINDOW *window;
     INT cellWidth=8, cellHeight=8; /* FIXME: Hardcoded */
 
@@ -70,7 +70,7 @@
         }
         wndPtr->pDriverData = window;
     }
-    WIN_ReleaseWndPtr( wndPtr );
+    WIN_ReleasePtr( wndPtr );
 #else /* defined(WINE_CURSES) */
     FIXME("(%x): stub\n", hwnd);
 #endif /* defined(WINE_CURSES) */
@@ -117,14 +117,14 @@
 BOOL TTYDRV_DestroyWindow( HWND hwnd )
 {
 #ifdef WINE_CURSES
-    WND *wndPtr = WIN_FindWndPtr( hwnd );
+    WND *wndPtr = WIN_GetPtr( hwnd );
     WINDOW *window = wndPtr->pDriverData;
 
     TRACE("(%x)\n", hwnd);
 
     if (window && window != root_window) delwin(window);
     wndPtr->pDriverData = NULL;
-    WIN_ReleaseWndPtr( wndPtr );
+    WIN_ReleasePtr( wndPtr );
 #else /* defined(WINE_CURSES) */
     FIXME("(%x): stub\n", hwnd);
 #endif /* defined(WINE_CURSES) */
@@ -367,8 +367,6 @@
 BOOL TTYDRV_GetDC( HWND hwnd, HDC hdc, HRGN hrgn, DWORD flags )
 {
     WND *wndPtr = WIN_FindWndPtr(hwnd);
-    DC *dc;
-    BOOL updateVisRgn;
     HRGN hrgnVisible = 0;
     POINT org;
 
@@ -385,17 +383,9 @@
         org.y = wndPtr->rectClient.top;
     }
 
-    if (!(dc = DC_GetDCPtr( hdc )))
-    {
-        WIN_ReleaseWndPtr( wndPtr );
-        return FALSE;
-    }
-    dc->DCOrgX = org.x;
-    dc->DCOrgY = org.y;
-    updateVisRgn = (dc->flags & DC_DIRTY) != 0;
-    GDI_ReleaseObj( hdc );
+    SetDCOrg16( hdc, org.x, org.y );
 
-    if (updateVisRgn)
+    if (SetHookFlags16( hdc, DCHF_VALIDATEVISRGN ))  /* DC was dirty */
     {
         if (flags & DCX_PARENTCLIP)
         {
@@ -418,7 +408,6 @@
                 else
                     OffsetRgn( hrgnVisible, -wndPtr->rectClient.left,
                                -wndPtr->rectClient.top );
-                OffsetRgn( hrgnVisible, org.x, org.y );
             }
             else
                 hrgnVisible = CreateRectRgn( 0, 0, 0, 0 );
@@ -678,7 +667,6 @@
  */
 static UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
 {
-    WND *wndPtr;
     UINT swpFlags = 0;
     WINDOWPLACEMENT wpl;
 
@@ -691,11 +679,8 @@
     /* If I glark this right, yields an immutable window*/
     swpFlags = SWP_NOSIZE | SWP_NOMOVE;
 
-    if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
-
     /*cmd handling goes here.  see dlls/x1drv/winpos.c*/
 
-    WIN_ReleaseWndPtr( wndPtr );
     return swpFlags;
 }