[ros-diffs] [greatlrd] 30059: rename framebuf_acc.* to framebufacc.* for rbuild can not handle _, forget about that implement DrvSetPointerShape, left todo is the copy process for mono and color pointer data before it is completed.

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Fri Nov 2 01:03:02 CET 2007


Author: greatlrd
Date: Fri Nov  2 03:03:02 2007
New Revision: 30059

URL: http://svn.reactos.org/svn/reactos?rev=30059&view=rev
Log:
rename framebuf_acc.* to framebufacc.* for rbuild can not handle _, forget about that
implement DrvSetPointerShape, left todo is the copy process for mono and color pointer data before it is completed. 



Added:
    trunk/reactos/drivers/video/displays/framebufacc/framebufacc.def
      - copied unchanged from r30049, trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.def
    trunk/reactos/drivers/video/displays/framebufacc/framebufacc.h
      - copied, changed from r30049, trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h
    trunk/reactos/drivers/video/displays/framebufacc/framebufacc.rbuild
      - copied, changed from r30050, trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild
    trunk/reactos/drivers/video/displays/framebufacc/framebufacc.rc
      - copied unchanged from r30049, trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rc
Removed:
    trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.def
    trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h
    trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild
    trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rc
Modified:
    trunk/reactos/drivers/video/displays/framebufacc/enable.c
    trunk/reactos/drivers/video/displays/framebufacc/palette.c
    trunk/reactos/drivers/video/displays/framebufacc/pointer.c
    trunk/reactos/drivers/video/displays/framebufacc/screen.c
    trunk/reactos/drivers/video/displays/framebufacc/surface.c

Modified: trunk/reactos/drivers/video/displays/framebufacc/enable.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/enable.c?rev=30059&r1=30058&r2=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/enable.c (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/enable.c Fri Nov  2 03:03:02 2007
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#include "framebuf_acc.h"
+#include "framebufacc.h"
 
 static DRVFN DrvFunctionTable[] =
 {

Removed: trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.def
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.def?rev=30058&view=auto
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.def (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.def (removed)
@@ -1,3 +1,0 @@
-LIBRARY framebuf.dll
-EXPORTS
-DrvEnableDriver at 12

Removed: trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h?rev=30058&view=auto
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h (removed)
@@ -1,190 +1,0 @@
-/*
- * ReactOS Generic Framebuffer display driver
- *
- * Copyright (C) 2004 Filip Navara
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-#ifndef FRAMEBUF_H
-#define FRAMEBUF_H
-
-#include <stdarg.h>
-#include <windef.h>
-#include <guiddef.h>
-#include <wingdi.h>
-#include <winddi.h>
-#include <winioctl.h>
-#include <ntddvdeo.h>
-
-
-//#define EXPERIMENTAL_ACC_SUPPORT
-
-typedef struct _PDEV
-{
-   /* Driver stuff */
-   HANDLE hDriver;
-   HDEV hDevEng;
-   HSURF hSurfEng;
-   ULONG dwHooks;
-
-   /* Screen Data */
-   ULONG ModeIndex;
-   ULONG ScreenWidth;
-   ULONG ScreenHeight;
-   ULONG ScreenDelta;
-   BYTE BitsPerPixel;
-   ULONG RedMask;
-   ULONG GreenMask;
-   ULONG BlueMask;
-   BYTE PaletteShift;
-   PVOID ScreenPtr;
-
-   /* Vitual desktop stuff */
-   POINTL ScreenOffsetXY;
-
-   /* Palette data */
-   HPALETTE DefaultPalette;
-   PALETTEENTRY *PaletteEntries;
-
-    /* hw mouse acclartions support */
-    VIDEO_POINTER_CAPABILITIES PointerCapabilities;
-    PVIDEO_POINTER_ATTRIBUTES pPointerAttributes;
-    ULONG  PointerAttributesSize;
-    POINTL PointerHotSpot;
-    BOOL HwMouseActive;
-
-#ifdef EXPERIMENTAL_MOUSE_CURSOR_SUPPORT
-   XLATEOBJ *PointerXlateObject;
-   HSURF PointerColorSurface;
-   HSURF PointerMaskSurface;
-   HSURF PointerSaveSurface;
-
-#endif
-
-   /* DirectX Support */
-   DWORD iDitherFormat;
-   ULONG MemHeight;
-   ULONG MemWidth;
-   DWORD dwHeap;
-   VIDEOMEMORY* pvmList;
-   BOOL bDDInitialized;
-   DDPIXELFORMAT ddpfDisplay;
-
-    /* System Cached data */
-    PVOID pVideoMemCache;
-    PVOID pRealVideoMem;
-
-    /* Avail Video memory from Current Screen and the end range */
-    ULONG VideoMemSize;
-
-} PDEV, *PPDEV;
-
-#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
-
-#define DEVICE_NAME	L"framebuf"
-#define ALLOC_TAG	TAG('F','B','U','F')
-
-
-DHPDEV APIENTRY
-DrvEnablePDEV(
-   IN DEVMODEW *pdm,
-   IN LPWSTR pwszLogAddress,
-   IN ULONG cPat,
-   OUT HSURF *phsurfPatterns,
-   IN ULONG cjCaps,
-   OUT ULONG *pdevcaps,
-   IN ULONG cjDevInfo,
-   OUT DEVINFO *pdi,
-   IN HDEV hdev,
-   IN LPWSTR pwszDeviceName,
-   IN HANDLE hDriver);
-
-VOID APIENTRY
-DrvCompletePDEV(
-   IN DHPDEV dhpdev,
-   IN HDEV hdev);
-
-VOID APIENTRY
-DrvDisablePDEV(
-   IN DHPDEV dhpdev);
-
-HSURF APIENTRY
-DrvEnableSurface(
-   IN DHPDEV dhpdev);
-
-VOID APIENTRY
-DrvDisableSurface(
-   IN DHPDEV dhpdev);
-
-BOOL APIENTRY
-DrvAssertMode(
-   IN DHPDEV dhpdev,
-   IN BOOL bEnable);
-
-ULONG APIENTRY
-DrvGetModes(
-   IN HANDLE hDriver,
-   IN ULONG cjSize,
-   OUT DEVMODEW *pdm);
-
-BOOL APIENTRY
-DrvSetPalette(
-   IN DHPDEV dhpdev,
-   IN PALOBJ *ppalo,
-   IN FLONG fl,
-   IN ULONG iStart,
-   IN ULONG cColors);
-
-ULONG APIENTRY
-DrvSetPointerShape(
-   IN SURFOBJ *pso,
-   IN SURFOBJ *psoMask,
-   IN SURFOBJ *psoColor,
-   IN XLATEOBJ *pxlo,
-   IN LONG xHot,
-   IN LONG yHot,
-   IN LONG x,
-   IN LONG y,
-   IN RECTL *prcl,
-   IN FLONG fl);
-
-VOID APIENTRY
-DrvMovePointer(
-   IN SURFOBJ *pso,
-   IN LONG x,
-   IN LONG y,
-   IN RECTL *prcl);
-
-BOOL
-IntInitScreenInfo(
-   PPDEV ppdev,
-   LPDEVMODEW pDevMode,
-   PGDIINFO pGdiInfo,
-   PDEVINFO pDevInfo);
-
-BOOL
-IntInitDefaultPalette(
-   PPDEV ppdev,
-   PDEVINFO pDevInfo);
-
-BOOL APIENTRY
-IntSetPalette(
-   IN DHPDEV dhpdev,
-   IN PPALETTEENTRY ppalent,
-   IN ULONG iStart,
-   IN ULONG cColors);
-
-#endif /* FRAMEBUF_H */

Removed: trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild?rev=30058&view=auto
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild (removed)
@@ -1,14 +1,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
-<module name="framebufacc" type="kernelmodedll" entrypoint="_DrvEnableDriver at 12" installbase="system32" installname="framebuf.dll">
-	<importlibrary definition="framebuf_acc.def" />
-	<include base="framebuf_acc">.</include>
-	<library>win32k</library>
-	<library>libcntpr</library>
-	<file>enable.c</file>
-	<file>palette.c</file>
-	<file>pointer.c</file>
-	<file>screen.c</file>
-	<file>surface.c</file>
-	<file>framebuf_acc.rc</file>
-</module>

Removed: trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rc?rev=30058&view=auto
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rc (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rc (removed)
@@ -1,5 +1,0 @@
-#define REACTOS_VERSION_DLL
-#define REACTOS_STR_FILE_DESCRIPTION	"Framebuffer Display Driver\0"
-#define REACTOS_STR_INTERNAL_NAME	"framebuf\0"
-#define REACTOS_STR_ORIGINAL_FILENAME	"framebuf.dll\0"
-#include <reactos/version.rc>

Copied: trunk/reactos/drivers/video/displays/framebufacc/framebufacc.h (from r30049, trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h)
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/framebufacc.h?p2=trunk/reactos/drivers/video/displays/framebufacc/framebufacc.h&p1=trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h&r1=30049&r2=30059&rev=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.h (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/framebufacc.h Fri Nov  2 03:03:02 2007
@@ -91,6 +91,9 @@
     ULONG VideoMemSize;
 
 } PDEV, *PPDEV;
+
+
+
 
 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
 
@@ -187,4 +190,14 @@
    IN ULONG iStart,
    IN ULONG cColors);
 
+BOOL
+CopyMonoPointer(PPDEV ppdev,
+                SURFOBJ *pso);
+
+BOOL
+CopyColorPointer(PPDEV ppdev,
+                 SURFOBJ *psoMask,
+                 SURFOBJ *psoColor,
+                 XLATEOBJ *pxlo);
+
 #endif /* FRAMEBUF_H */

Copied: trunk/reactos/drivers/video/displays/framebufacc/framebufacc.rbuild (from r30050, trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild)
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/framebufacc.rbuild?p2=trunk/reactos/drivers/video/displays/framebufacc/framebufacc.rbuild&p1=trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild&r1=30050&r2=30059&rev=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/framebuf_acc.rbuild (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/framebufacc.rbuild Fri Nov  2 03:03:02 2007
@@ -1,8 +1,8 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="framebufacc" type="kernelmodedll" entrypoint="_DrvEnableDriver at 12" installbase="system32" installname="framebuf.dll">
-	<importlibrary definition="framebuf_acc.def" />
-	<include base="framebuf_acc">.</include>
+	<importlibrary definition="framebufacc.def" />
+	<include base="framebufacc">.</include>
 	<library>win32k</library>
 	<library>libcntpr</library>
 	<file>enable.c</file>
@@ -10,5 +10,5 @@
 	<file>pointer.c</file>
 	<file>screen.c</file>
 	<file>surface.c</file>
-	<file>framebuf_acc.rc</file>
+	<file>framebufacc.rc</file>
 </module>

Modified: trunk/reactos/drivers/video/displays/framebufacc/palette.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/palette.c?rev=30059&r1=30058&r2=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/palette.c (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/palette.c Fri Nov  2 03:03:02 2007
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#include "framebuf_acc.h"
+#include "framebufacc.h"
 
 /*
  * Standard color that must be in palette, because they're used for

Modified: trunk/reactos/drivers/video/displays/framebufacc/pointer.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/pointer.c?rev=30059&r1=30058&r2=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/pointer.c (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/pointer.c Fri Nov  2 03:03:02 2007
@@ -18,7 +18,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#include "framebuf_acc.h"
+#include "framebufacc.h"
+
 
 
 /*
@@ -75,7 +76,7 @@
  * Sets the new pointer shape.
  *
  * Status
- *    @unimplemented
+ *    @implemented
  */
 
 ULONG APIENTRY
@@ -91,10 +92,135 @@
    IN RECTL *prcl,
    IN FLONG fl)
 {
-/*   return SPS_DECLINE;*/
-   return EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl);
-}
-
-
-
-
+    PPDEV   ppdev = (PPDEV) pso->dhpdev;
+    ULONG returnedDataLength = 0;
+
+    if (ppdev->pPointerAttributes == NULL)
+    {
+        /* hw did not support hw mouse pointer, we try then with software */
+        return EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl);
+    }
+
+    /* check see if the apps ask to hide the mouse or not */
+    if (psoMask == (SURFOBJ *) NULL)
+    {
+        if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_DISABLE_POINTER, NULL, 0, NULL, 0, &returnedDataLength))
+        {
+            /* no hw support found for the mouse we try then the software version */
+            return EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl);
+        }
+
+        return TRUE;
+    }
+
+    /* set our hotspot */
+    ppdev->PointerHotSpot.x = xHot;
+    ppdev->PointerHotSpot.y = yHot;
+
+    /* Set the hw mouse shape */
+
+    if (psoColor != (SURFOBJ *) NULL)
+    {
+        /* We got a color mouse pointer */
+        if ((ppdev->PointerCapabilities.Flags & VIDEO_MODE_COLOR_POINTER) &&
+            (CopyColorPointer(ppdev, psoMask, psoColor, pxlo)) )
+        {
+            ppdev->pPointerAttributes->Flags |= VIDEO_MODE_COLOR_POINTER;
+        }
+        else
+        {
+            /* No color mouse pointer being set, so we need try the software version then */
+            if (ppdev->HwMouseActive)
+            {
+                ppdev->HwMouseActive = FALSE;
+                if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_DISABLE_POINTER, NULL, 0, NULL, 0, &returnedDataLength))
+                {
+                    /* hw did not support hw mouse pointer, we try then with software */
+                    return EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl);
+                }
+            }
+            return SPS_DECLINE ;
+        }
+    }
+    else
+    {
+        /* We got a mono mouse pointer */
+        if ( (ppdev->PointerCapabilities.Flags & VIDEO_MODE_MONO_POINTER) &&
+              (CopyMonoPointer(ppdev, psoMask)))
+        {
+            ppdev->pPointerAttributes->Flags |= VIDEO_MODE_MONO_POINTER;
+        }
+        else
+        {
+            /* No mono mouse pointer being set, so we need try the software version then */
+            if (ppdev->HwMouseActive)
+            {
+                ppdev->HwMouseActive = FALSE;
+                if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_DISABLE_POINTER, NULL, 0, NULL, 0, &returnedDataLength))
+                {
+                    /* hw did not support hw mouse pointer, we try then with software */
+                    return EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl);
+                }
+            }
+            return SPS_DECLINE ;
+        }
+    }
+
+    /* we goto hw mouse pointer then we contnue filling in more info */
+
+    /* calc the mouse point positions */
+    if ((x != -1) || (y != -1))
+    {
+        ppdev->pPointerAttributes->Column -= (SHORT)(ppdev->PointerHotSpot.x);
+        ppdev->pPointerAttributes->Row -= (SHORT)(ppdev->PointerHotSpot.y);
+    }
+
+    /* set correct flags if it animated or need be updated anime or no flags at all */
+    if (fl & SPS_ANIMATESTART)
+    {
+        ppdev->pPointerAttributes->Flags |= VIDEO_MODE_ANIMATE_START;
+    }
+    else if (fl & SPS_ANIMATEUPDATE)
+    {
+        ppdev->pPointerAttributes->Flags |= VIDEO_MODE_ANIMATE_UPDATE;
+    }
+
+    ppdev->pPointerAttributes->Enable = 1;
+    ppdev->pPointerAttributes->Column = (SHORT)(x);
+    ppdev->pPointerAttributes->Row    = (SHORT)(y);
+
+    /* Set the new mouse pointer shape */
+    if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_SET_POINTER_ATTR, ppdev->pPointerAttributes,
+                           ppdev->PointerAttributesSize, NULL, 0, &returnedDataLength))
+    {
+            /* no hw support found for the mouse we try then the software version */
+            return EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl);
+    }
+
+    /* we got real hw support */
+    ppdev->HwMouseActive = TRUE;
+    return SPS_ACCEPT_NOEXCLUDE;
+}
+
+
+/* Internal api that are only use in DrvSetPointerShape */
+
+BOOL
+CopyColorPointer(PPDEV ppdev,
+                SURFOBJ *psoMask,
+                SURFOBJ *psoColor,
+                XLATEOBJ *pxlo)
+{
+    /* FIXME unimplement */
+    return FALSE;
+}
+
+BOOL
+CopyMonoPointer(PPDEV ppdev,
+                SURFOBJ *pso)
+{
+    /* FIXME unimplement */
+    return FALSE;
+}
+
+

Modified: trunk/reactos/drivers/video/displays/framebufacc/screen.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/screen.c?rev=30059&r1=30058&r2=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/screen.c (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/screen.c Fri Nov  2 03:03:02 2007
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#include "framebuf_acc.h"
+#include "framebufacc.h"
 
 /*
  * GetAvailableModes

Modified: trunk/reactos/drivers/video/displays/framebufacc/surface.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/displays/framebufacc/surface.c?rev=30059&r1=30058&r2=30059&view=diff
==============================================================================
--- trunk/reactos/drivers/video/displays/framebufacc/surface.c (original)
+++ trunk/reactos/drivers/video/displays/framebufacc/surface.c Fri Nov  2 03:03:02 2007
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#include "framebuf_acc.h"
+#include "framebufacc.h"
 
 BOOL 
 InitSurface(PPDEV ppdev,
@@ -156,7 +156,8 @@
    }
 
    /* Rest the desktop vitual position */
-   ppdev->ScreenOffsetXY = {0,0};
+   ppdev->ScreenOffsetXY.x = 0;
+   ppdev->ScreenOffsetXY.y = 0;
 
 
    switch (ppdev->BitsPerPixel)




More information about the Ros-diffs mailing list