1*4882a593SmuzhiyunFrom 2186a4e5ed6b8b8f24ebd4d2045df10d1f895999 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Adam Jackson <ajax@redhat.com>
3*4882a593SmuzhiyunDate: Wed, 21 May 2014 09:49:56 -0400
4*4882a593SmuzhiyunSubject: [PATCH] Use own thunk functions instead of fbdevHW*Weak
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunI plan to remove the Weak functions from a future server.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunSigned-off-by: Adam Jackson <ajax@redhat.com>
9*4882a593Smuzhiyun[Upstream https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev/-/commit/2673e727063fe28310836f1e6e9eda552930218a
10*4882a593Smuzhiyun ported to xf86-video-fbturbo]
11*4882a593SmuzhiyunSigned-off-by: Peter Seiderer <ps.report@gmx.net>
12*4882a593Smuzhiyun---
13*4882a593Smuzhiyun src/fbdev.c | 86 +++++++++++++++++++++++++++++++++++++++++++----------
14*4882a593Smuzhiyun 1 file changed, 71 insertions(+), 15 deletions(-)
15*4882a593Smuzhiyun
16*4882a593Smuzhiyundiff --git a/src/fbdev.c b/src/fbdev.c
17*4882a593Smuzhiyunindex 90d9f39..81bd1fb 100644
18*4882a593Smuzhiyun--- a/src/fbdev.c
19*4882a593Smuzhiyun+++ b/src/fbdev.c
20*4882a593Smuzhiyun@@ -269,6 +269,35 @@ FBDevIdentify(int flags)
21*4882a593Smuzhiyun 	xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets);
22*4882a593Smuzhiyun }
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun+static Bool
25*4882a593Smuzhiyun+fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
26*4882a593Smuzhiyun+{
27*4882a593Smuzhiyun+    return fbdevHWSwitchMode(pScrn, mode);
28*4882a593Smuzhiyun+}
29*4882a593Smuzhiyun+
30*4882a593Smuzhiyun+static void
31*4882a593Smuzhiyun+fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
32*4882a593Smuzhiyun+{
33*4882a593Smuzhiyun+    fbdevHWAdjustFrame(pScrn, x, y);
34*4882a593Smuzhiyun+}
35*4882a593Smuzhiyun+
36*4882a593Smuzhiyun+static Bool
37*4882a593Smuzhiyun+fbdevEnterVT(ScrnInfoPtr pScrn)
38*4882a593Smuzhiyun+{
39*4882a593Smuzhiyun+    return fbdevHWEnterVT(pScrn);
40*4882a593Smuzhiyun+}
41*4882a593Smuzhiyun+
42*4882a593Smuzhiyun+static void
43*4882a593Smuzhiyun+fbdevLeaveVT(ScrnInfoPtr pScrn)
44*4882a593Smuzhiyun+{
45*4882a593Smuzhiyun+    fbdevHWLeaveVT(pScrn);
46*4882a593Smuzhiyun+}
47*4882a593Smuzhiyun+
48*4882a593Smuzhiyun+static ModeStatus
49*4882a593Smuzhiyun+fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags)
50*4882a593Smuzhiyun+{
51*4882a593Smuzhiyun+    return fbdevHWValidMode(pScrn, mode, verbose, flags);
52*4882a593Smuzhiyun+}
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun #ifdef XSERVER_LIBPCIACCESS
55*4882a593Smuzhiyun static Bool FBDevPciProbe(DriverPtr drv, int entity_num,
56*4882a593Smuzhiyun@@ -294,11 +323,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num,
57*4882a593Smuzhiyun 	    pScrn->Probe         = FBDevProbe;
58*4882a593Smuzhiyun 	    pScrn->PreInit       = FBDevPreInit;
59*4882a593Smuzhiyun 	    pScrn->ScreenInit    = FBDevScreenInit;
60*4882a593Smuzhiyun-	    pScrn->SwitchMode    = fbdevHWSwitchModeWeak();
61*4882a593Smuzhiyun-	    pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();
62*4882a593Smuzhiyun-	    pScrn->EnterVT       = fbdevHWEnterVTWeak();
63*4882a593Smuzhiyun-	    pScrn->LeaveVT       = fbdevHWLeaveVTWeak();
64*4882a593Smuzhiyun-	    pScrn->ValidMode     = fbdevHWValidModeWeak();
65*4882a593Smuzhiyun+	    pScrn->SwitchMode    = fbdevSwitchMode;
66*4882a593Smuzhiyun+	    pScrn->AdjustFrame   = fbdevAdjustFrame;
67*4882a593Smuzhiyun+	    pScrn->EnterVT       = fbdevEnterVT;
68*4882a593Smuzhiyun+	    pScrn->LeaveVT       = fbdevLeaveVT;
69*4882a593Smuzhiyun+	    pScrn->ValidMode     = fbdevValidMode;
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun 	    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
72*4882a593Smuzhiyun 		       "claimed PCI slot %d@%d:%d:%d\n",
73*4882a593Smuzhiyun@@ -411,11 +440,11 @@ FBDevProbe(DriverPtr drv, int flags)
74*4882a593Smuzhiyun 		    pScrn->Probe         = FBDevProbe;
75*4882a593Smuzhiyun 		    pScrn->PreInit       = FBDevPreInit;
76*4882a593Smuzhiyun 		    pScrn->ScreenInit    = FBDevScreenInit;
77*4882a593Smuzhiyun-		    pScrn->SwitchMode    = fbdevHWSwitchModeWeak();
78*4882a593Smuzhiyun-		    pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();
79*4882a593Smuzhiyun-		    pScrn->EnterVT       = fbdevHWEnterVTWeak();
80*4882a593Smuzhiyun-		    pScrn->LeaveVT       = fbdevHWLeaveVTWeak();
81*4882a593Smuzhiyun-		    pScrn->ValidMode     = fbdevHWValidModeWeak();
82*4882a593Smuzhiyun+		    pScrn->SwitchMode    = fbdevSwitchMode;
83*4882a593Smuzhiyun+		    pScrn->AdjustFrame   = fbdevAdjustFrame;
84*4882a593Smuzhiyun+		    pScrn->EnterVT       = fbdevEnterVT;
85*4882a593Smuzhiyun+		    pScrn->LeaveVT       = fbdevLeaveVT;
86*4882a593Smuzhiyun+		    pScrn->ValidMode     = fbdevValidMode;
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun 		    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
89*4882a593Smuzhiyun 			       "using %s\n", dev ? dev : "default device");
90*4882a593Smuzhiyun@@ -656,6 +685,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
91*4882a593Smuzhiyun 	return TRUE;
92*4882a593Smuzhiyun }
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun+static void
95*4882a593Smuzhiyun+fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)
96*4882a593Smuzhiyun+{
97*4882a593Smuzhiyun+    shadowUpdateRotatePacked(pScreen, pBuf);
98*4882a593Smuzhiyun+}
99*4882a593Smuzhiyun+
100*4882a593Smuzhiyun+static void
101*4882a593Smuzhiyun+fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)
102*4882a593Smuzhiyun+{
103*4882a593Smuzhiyun+    shadowUpdatePacked(pScreen, pBuf);
104*4882a593Smuzhiyun+}
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun static Bool
107*4882a593Smuzhiyun FBDevCreateScreenResources(ScreenPtr pScreen)
108*4882a593Smuzhiyun@@ -675,7 +715,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen)
109*4882a593Smuzhiyun     pPixmap = pScreen->GetScreenPixmap(pScreen);
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun     if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ?
112*4882a593Smuzhiyun-		   shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(),
113*4882a593Smuzhiyun+		   fbdevUpdateRotatePacked : fbdevUpdatePacked,
114*4882a593Smuzhiyun 		   FBDevWindowLinear, fPtr->rotate, NULL)) {
115*4882a593Smuzhiyun 	return FALSE;
116*4882a593Smuzhiyun     }
117*4882a593Smuzhiyun@@ -699,6 +739,23 @@ FBDevShadowInit(ScreenPtr pScreen)
118*4882a593Smuzhiyun     return TRUE;
119*4882a593Smuzhiyun }
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun+static void
122*4882a593Smuzhiyun+fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis)
123*4882a593Smuzhiyun+{
124*4882a593Smuzhiyun+    fbdevHWLoadPalette(pScrn, num, i, col, pVis);
125*4882a593Smuzhiyun+}
126*4882a593Smuzhiyun+
127*4882a593Smuzhiyun+static void
128*4882a593Smuzhiyun+fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags)
129*4882a593Smuzhiyun+{
130*4882a593Smuzhiyun+    fbdevHWDPMSSet(pScrn, mode, flags);
131*4882a593Smuzhiyun+}
132*4882a593Smuzhiyun+
133*4882a593Smuzhiyun+static Bool
134*4882a593Smuzhiyun+fbdevSaveScreen(ScreenPtr pScreen, int mode)
135*4882a593Smuzhiyun+{
136*4882a593Smuzhiyun+    return fbdevHWSaveScreen(pScreen, mode);
137*4882a593Smuzhiyun+}
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun static Bool
140*4882a593Smuzhiyun FBDevScreenInit(SCREEN_INIT_ARGS_DECL)
141*4882a593Smuzhiyun@@ -1025,13 +1082,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)
142*4882a593Smuzhiyun 		return FALSE;
143*4882a593Smuzhiyun 	}
144*4882a593Smuzhiyun 	flags = CMAP_PALETTED_TRUECOLOR;
145*4882a593Smuzhiyun-	if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(),
146*4882a593Smuzhiyun-				NULL, flags))
147*4882a593Smuzhiyun+	if(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags))
148*4882a593Smuzhiyun 		return FALSE;
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun-	xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0);
151*4882a593Smuzhiyun+	xf86DPMSInit(pScreen, fbdevDPMSSet, 0);
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun-	pScreen->SaveScreen = fbdevHWSaveScreenWeak();
154*4882a593Smuzhiyun+	pScreen->SaveScreen = fbdevSaveScreen;
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun 	/* Wrap the current CloseScreen function */
157*4882a593Smuzhiyun 	fPtr->CloseScreen = pScreen->CloseScreen;
158*4882a593Smuzhiyun--
159*4882a593Smuzhiyun2.31.1
160*4882a593Smuzhiyun
161