Index: ChangeLog
===================================================================
--- ChangeLog (revision 711)
+++ ChangeLog (revision 712)
@@ -1,3 +1,14 @@
+2009-01-07 Jon Nettleton <jon.nettleton@gmail.com>
+
+ * src/via_bios.h:
+ * src/via_crtc.c: (via_xf86crtc_resize), (ViaPreInitCRTCConfig):
+ * src/via_driver.c: (VIAPreInit):
+
+ Temporary hack to fix a bug with newer Xorg and DRI
+ that crashes if CRTC is not setup. I am adding this
+ because I am working on this part of the code anyways
+ so it won't get lost in bit rot.
+
2009-01-06 Jon Nettleton <jon.nettleton@gmail.com>
* src/via_mode.c: (ViaModesMonitorFixup), (ViaModesAttachHelper):
Index: src/via_driver.c
===================================================================
--- src/via_driver.c (revision 711)
+++ src/via_driver.c (revision 712)
@@ -1665,6 +1665,9 @@
return FALSE;
}
+ /* Might not belong here temporary fix for bug fix */
+ ViaPreInitCRTCConfig(pScrn);
+
if (!pVia->UseLegacyModeSwitch) {
if (pBIOSInfo->Panel->IsActive)
ViaPanelPreInit(pScrn);
Index: src/via_crtc.c
===================================================================
--- src/via_crtc.c (revision 711)
+++ src/via_crtc.c (revision 712)
@@ -35,6 +35,8 @@
#include "via_mode.h"
+#include <xorg/xf86Crtc.h>
+
static void
ViaCRTCSetGraphicsRegisters(ScrnInfoPtr pScrn)
{
@@ -73,6 +75,26 @@
hwp->writeAttr(hwp, 0x14, 0x00);
}
+static Bool
+via_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
+{
+ scrn->virtualX = width;
+ scrn->virtualY = height;
+ return TRUE;
+}
+
+static const
+xf86CrtcConfigFuncsRec via_xf86crtc_config_funcs = {
+ via_xf86crtc_resize
+};
+
+void
+ViaPreInitCRTCConfig(ScrnInfoPtr pScrn)
+{
+ xf86CrtcConfigInit (pScrn, &via_xf86crtc_config_funcs);
+}
+
+
void
ViaCRTCInit(ScrnInfoPtr pScrn)
{
Index: src/via_bios.h
===================================================================
--- src/via_bios.h (revision 711)
+++ src/via_bios.h (revision 712)
@@ -227,6 +227,7 @@
void ViaModeSet(ScrnInfoPtr pScrn, DisplayModePtr mode);
/* via_crtc.c */
+void ViaPreInitCRTCConfig(ScrnInfoPtr pScrn);
void ViaCRTCInit(ScrnInfoPtr pScrn);
void ViaFirstCRTCSetStartingAddress(ScrnInfoPtr pSCrn, int x, int y);
void ViaFirstCRTCSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode);