On 19/04/14 08:13, Alan Coopersmith wrote:
This doesn't apply to current git at all.   The git index of ad38ba4
suggests
it's based on xf86-input-mouse 1.7.2, not the current 1.9.0 release or
git master.

Sorry about that - I was doing my testing using that version as I was having trouble getting the latest versions of everything building in my Solaris VM, though I thought I had submitted my forward-port to master. I will check that tomorrow and re-submit.

Regards,

Michael

On 04/10/14 11:21 AM, Michael Thayer wrote:
Currently on Solaris absolute input reporting only takes resolution
changes
into account when the video driver is using the pre-RandR 1.2 APIs, and
there it uses the physical resolution, not the virtual.  This patch fixes
those two things.

Signed-off-by: Michael Thayer <[email protected]>
---
  src/sun_mouse.c |   42 +++++++++++++++++++++++++++++++++---------
  1 file changed, 33 insertions(+), 9 deletions(-)

diff --git a/src/sun_mouse.c b/src/sun_mouse.c
index ad38ba4..9ffd590 100644
--- a/src/sun_mouse.c
+++ b/src/sun_mouse.c
@@ -57,6 +57,7 @@
  #include "mouse.h"
  #include "xisb.h"
  #include "mipointer.h"
+#include "xf86Crtc.h"
  #include <sys/stropts.h>
  #include <sys/vuid_event.h>
  #include <sys/msio.h>
@@ -401,14 +402,11 @@ static void vuidMouseSendScreenSize(ScreenPtr
pScreen, VuidMsePtr pVuidMse)
      ScrnInfoPtr pScr = XF86SCRNINFO(pScreen);
      int result;

-    if (!pScr->currentMode)
-    return;
-
-    if ((pVuidMse->absres.width != pScr->currentMode->HDisplay) ||
-    (pVuidMse->absres.height != pScr->currentMode->VDisplay))
+    if ((pVuidMse->absres.width != pScr->virtualX) ||
+    (pVuidMse->absres.height != pScr->virtualY))
      {
-    pVuidMse->absres.width = pScr->currentMode->HDisplay;
-    pVuidMse->absres.height = pScr->currentMode->VDisplay;
+    pVuidMse->absres.width = pScr->virtualX;
+    pVuidMse->absres.height = pScr->virtualY;

      do {
          result = ioctl(pInfo->fd, MSIOSRESOLUTION,
&(pVuidMse->absres));
@@ -452,6 +450,24 @@ static void vuidMouseAdjustFrame(int index, int
x, int y, int flags)
        }
        }
  }
+
+static void vuidMouseCrtcNotify(ScreenPtr pScreen)
+{
+      xf86_crtc_notify_proc_ptr wrappedCrtcNotify
+      = (xf86_crtc_notify_proc_ptr) vuidMouseGetScreenPrivate(pScreen);
+      VuidMsePtr    m;
+      ScreenPtr     ptrCurScreen;
+
+      if(wrappedCrtcNotify)
+     wrappedCrtcNotify(pScreen);
+
+      for (m = vuidMouseList; m != NULL ; m = m->next) {
+      ptrCurScreen = miPointerGetScreen(m->pInfo->dev);
+      if (ptrCurScreen == pScreen) {
+          vuidMouseSendScreenSize(pScreen, m);
+      }
+      }
+}
  #endif /* HAVE_ABSOLUTE_MOUSE_SCALING */


@@ -487,8 +503,16 @@ vuidMouseProc(DeviceIntPtr pPointer, int what)
          for (i = 0; i < screenInfo.numScreens; i++) {
              ScreenPtr pScreen = screenInfo.screens[i];
              ScrnInfoPtr pScrn = XF86SCRNINFO(pScreen);
-            vuidMouseSetScreenPrivate(pScreen, pScrn->AdjustFrame);
-            pScrn->AdjustFrame = vuidMouseAdjustFrame;
+            if (xf86CrtcConfigPrivateIndex != -1) {
+            xf86_crtc_notify_proc_ptr pCrtcNotify
+                = xf86_wrap_crtc_notify(pScreen,
+                            vuidMouseCrtcNotify);
+            vuidMouseSetScreenPrivate(pScreen, pCrtcNotify);
+            } else {
+            vuidMouseSetScreenPrivate(pScreen,
+                          pScrn->AdjustFrame);
+            pScrn->AdjustFrame = vuidMouseAdjustFrame;
+            }
          }
          vuidMouseGeneration = serverGeneration;
      }





--
ORACLE Deutschland B.V. & Co. KG   Michael Thayer
Werkstrasse 24                     VirtualBox engineering
71384 Weinstadt, Germany           mailto:[email protected]

Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Geschäftsführer: Jürgen Kunz

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to