mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
xbmc-pvr: update XVBA patches
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
723123deb2
commit
50bf801baa
@ -1846,7 +1846,7 @@ index f663380..cbe82c5 100644
|
|||||||
#define CONF_FLAGS_FORMAT_BYPASS 0x100000
|
#define CONF_FLAGS_FORMAT_BYPASS 0x100000
|
||||||
#endif
|
#endif
|
||||||
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||||
index 31bb49a..25cd49a 100644
|
index 31bb49a..8f0506d 100644
|
||||||
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||||
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
|
||||||
@@ -53,6 +53,10 @@
|
@@ -53,6 +53,10 @@
|
||||||
@ -1860,27 +1860,7 @@ index 31bb49a..25cd49a 100644
|
|||||||
#define MAXPRESENTDELAY 0.500
|
#define MAXPRESENTDELAY 0.500
|
||||||
|
|
||||||
/* at any point we want an exclusive lock on rendermanager */
|
/* at any point we want an exclusive lock on rendermanager */
|
||||||
@@ -639,11 +643,19 @@ void CXBMCRenderManager::Present()
|
@@ -779,6 +783,25 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef HAVE_LIBVA
|
|
||||||
+ /* wait for this present to be valid */
|
|
||||||
+ if(g_graphicsContext.IsFullScreenVideo())
|
|
||||||
+ WaitPresentTime(m_presenttime);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
Render(true, 0, 255);
|
|
||||||
|
|
||||||
+#ifndef HAVE_LIBVA
|
|
||||||
/* wait for this present to be valid */
|
|
||||||
if(g_graphicsContext.IsFullScreenVideo())
|
|
||||||
WaitPresentTime(m_presenttime);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
m_presentevent.Set();
|
|
||||||
}
|
|
||||||
@@ -779,6 +791,25 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic)
|
|
||||||
else if(pic.format == DVDVideoPicture::FMT_VAAPI)
|
else if(pic.format == DVDVideoPicture::FMT_VAAPI)
|
||||||
m_pRenderer->AddProcessor(*pic.vaapi);
|
m_pRenderer->AddProcessor(*pic.vaapi);
|
||||||
#endif
|
#endif
|
||||||
@ -7077,73 +7057,18 @@ index 4534aa1..c245679 100644
|
|||||||
m_bRunning = false;
|
m_bRunning = false;
|
||||||
m_pObserver = NULL;
|
m_pObserver = NULL;
|
||||||
diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp
|
diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp
|
||||||
index 83fabfe..a2e6efc 100644
|
index 83fabfe..b5c8154 100644
|
||||||
--- a/xbmc/video/VideoReferenceClock.cpp
|
--- a/xbmc/video/VideoReferenceClock.cpp
|
||||||
+++ b/xbmc/video/VideoReferenceClock.cpp
|
+++ b/xbmc/video/VideoReferenceClock.cpp
|
||||||
@@ -30,6 +30,9 @@
|
@@ -30,6 +30,7 @@
|
||||||
#if defined(HAS_GLX) && defined(HAS_XRANDR)
|
#if defined(HAS_GLX) && defined(HAS_XRANDR)
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <X11/extensions/Xrandr.h>
|
#include <X11/extensions/Xrandr.h>
|
||||||
+ #include "windowing/WindowingFactory.h"
|
+ #include "windowing/WindowingFactory.h"
|
||||||
+ #include "settings/Settings.h"
|
|
||||||
+ #include "guilib/GraphicContext.h"
|
|
||||||
#define NVSETTINGSCMD "nvidia-settings -nt -q RefreshRate3"
|
#define NVSETTINGSCMD "nvidia-settings -nt -q RefreshRate3"
|
||||||
#elif defined(__APPLE__) && !defined(__arm__)
|
#elif defined(__APPLE__) && !defined(__arm__)
|
||||||
#include <QuartzCore/CVDisplayLink.h>
|
#include <QuartzCore/CVDisplayLink.h>
|
||||||
@@ -51,6 +54,52 @@
|
@@ -106,7 +107,7 @@ using namespace std;
|
||||||
#include "settings/AdvancedSettings.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if defined(HAS_GLX)
|
|
||||||
+void CDisplayCallback::OnLostDevice()
|
|
||||||
+{
|
|
||||||
+ CSingleLock lock(m_DisplaySection);
|
|
||||||
+ m_State = DISP_LOST;
|
|
||||||
+ m_DisplayEvent.Reset();
|
|
||||||
+}
|
|
||||||
+void CDisplayCallback::OnResetDevice()
|
|
||||||
+{
|
|
||||||
+ CSingleLock lock(m_DisplaySection);
|
|
||||||
+ m_State = DISP_RESET;
|
|
||||||
+ m_DisplayEvent.Set();
|
|
||||||
+}
|
|
||||||
+void CDisplayCallback::Register()
|
|
||||||
+{
|
|
||||||
+ CSingleLock lock(m_DisplaySection);
|
|
||||||
+ g_Windowing.Register(this);
|
|
||||||
+ m_State = DISP_OPEN;
|
|
||||||
+}
|
|
||||||
+void CDisplayCallback::Unregister()
|
|
||||||
+{
|
|
||||||
+ g_Windowing.Unregister(this);
|
|
||||||
+}
|
|
||||||
+bool CDisplayCallback::IsReset()
|
|
||||||
+{
|
|
||||||
+ DispState state;
|
|
||||||
+ { CSingleLock lock(m_DisplaySection);
|
|
||||||
+ state = m_State;
|
|
||||||
+ }
|
|
||||||
+ if (state == DISP_LOST)
|
|
||||||
+ {
|
|
||||||
+ CLog::Log(LOGDEBUG,"VideoReferenceClock - wait for display reset signal");
|
|
||||||
+ m_DisplayEvent.Wait();
|
|
||||||
+ CSingleLock lock(m_DisplaySection);
|
|
||||||
+ state = m_State;
|
|
||||||
+ CLog::Log(LOGDEBUG,"VideoReferenceClock - got display reset signal");
|
|
||||||
+ }
|
|
||||||
+ if (state == DISP_RESET)
|
|
||||||
+ {
|
|
||||||
+ m_State = DISP_OPEN;
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#if defined(_WIN32) && defined(HAS_DX)
|
|
||||||
@@ -106,7 +155,7 @@ using namespace std;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -7152,7 +7077,7 @@ index 83fabfe..a2e6efc 100644
|
|||||||
{
|
{
|
||||||
m_SystemFrequency = CurrentHostFrequency();
|
m_SystemFrequency = CurrentHostFrequency();
|
||||||
m_ClockSpeed = 1.0;
|
m_ClockSpeed = 1.0;
|
||||||
@@ -160,6 +209,8 @@ void CVideoReferenceClock::Process()
|
@@ -160,6 +161,8 @@ void CVideoReferenceClock::Process()
|
||||||
m_RefreshChanged = 0;
|
m_RefreshChanged = 0;
|
||||||
m_Started.Set();
|
m_Started.Set();
|
||||||
|
|
||||||
@ -7161,7 +7086,16 @@ index 83fabfe..a2e6efc 100644
|
|||||||
if (SetupSuccess)
|
if (SetupSuccess)
|
||||||
{
|
{
|
||||||
m_UseVblank = true; //tell other threads we're using vblank as clock
|
m_UseVblank = true; //tell other threads we're using vblank as clock
|
||||||
@@ -267,6 +318,14 @@ bool CVideoReferenceClock::SetupGLX()
|
@@ -228,6 +231,8 @@ bool CVideoReferenceClock::SetupGLX()
|
||||||
|
m_vInfo = NULL;
|
||||||
|
m_Context = NULL;
|
||||||
|
m_Window = 0;
|
||||||
|
+ m_pixmap = None;
|
||||||
|
+ m_glPixmap = None;
|
||||||
|
|
||||||
|
CLog::Log(LOGDEBUG, "CVideoReferenceClock: Setting up GLX");
|
||||||
|
|
||||||
|
@@ -267,6 +272,14 @@ bool CVideoReferenceClock::SetupGLX()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7176,7 +7110,7 @@ index 83fabfe..a2e6efc 100644
|
|||||||
m_vInfo = glXChooseVisual(m_Dpy, DefaultScreen(m_Dpy), singleBufferAttributes);
|
m_vInfo = glXChooseVisual(m_Dpy, DefaultScreen(m_Dpy), singleBufferAttributes);
|
||||||
if (!m_vInfo)
|
if (!m_vInfo)
|
||||||
{
|
{
|
||||||
@@ -274,13 +333,16 @@ bool CVideoReferenceClock::SetupGLX()
|
@@ -274,13 +287,26 @@ bool CVideoReferenceClock::SetupGLX()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7194,11 +7128,21 @@ index 83fabfe..a2e6efc 100644
|
|||||||
- m_Window = XCreateWindow(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), 0, 0, 256, 256, 0,
|
- m_Window = XCreateWindow(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), 0, 0, 256, 256, 0,
|
||||||
+ m_Window = XCreateWindow(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), 0, 0, 256, 256, 0,
|
+ m_Window = XCreateWindow(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), 0, 0, 256, 256, 0,
|
||||||
m_vInfo->depth, InputOutput, m_vInfo->visual, SwaMask, &Swa);
|
m_vInfo->depth, InputOutput, m_vInfo->visual, SwaMask, &Swa);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ m_pixmap = XCreatePixmap(m_Dpy, DefaultRootWindow(m_Dpy), 256, 256, m_vInfo->depth);
|
||||||
|
+ if (!m_pixmap)
|
||||||
|
+ {
|
||||||
|
+ CLog::Log(LOGDEBUG, "CVideoReferenceClock: unable to create pixmap");
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ m_glPixmap = glXCreateGLXPixmap(m_Dpy, m_vInfo, m_pixmap);
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
m_Context = glXCreateContext(m_Dpy, m_vInfo, NULL, True);
|
m_Context = glXCreateContext(m_Dpy, m_vInfo, NULL, True);
|
||||||
if (!m_Context)
|
if (!m_Context)
|
||||||
@@ -289,25 +351,32 @@ bool CVideoReferenceClock::SetupGLX()
|
@@ -289,25 +315,32 @@ bool CVideoReferenceClock::SetupGLX()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7206,7 +7150,7 @@ index 83fabfe..a2e6efc 100644
|
|||||||
+ if (!m_bIsATI)
|
+ if (!m_bIsATI)
|
||||||
+ ReturnV = glXMakeCurrent(m_Dpy, m_Window, m_Context);
|
+ ReturnV = glXMakeCurrent(m_Dpy, m_Window, m_Context);
|
||||||
+ else
|
+ else
|
||||||
+ ReturnV = glXMakeCurrent(m_Dpy, g_Windowing.GetwmWindow(), m_Context);
|
+ ReturnV = glXMakeCurrent(m_Dpy, m_glPixmap, m_Context);
|
||||||
+
|
+
|
||||||
if (ReturnV != True)
|
if (ReturnV != True)
|
||||||
{
|
{
|
||||||
@ -7242,25 +7186,7 @@ index 83fabfe..a2e6efc 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_glXGetVideoSyncSGI = (int (*)(unsigned int*))glXGetProcAddress((const GLubyte*)"glXGetVideoSyncSGI");
|
m_glXGetVideoSyncSGI = (int (*)(unsigned int*))glXGetProcAddress((const GLubyte*)"glXGetVideoSyncSGI");
|
||||||
@@ -324,16 +393,7 @@ bool CVideoReferenceClock::SetupGLX()
|
@@ -479,19 +512,6 @@ void CVideoReferenceClock::CleanupGLX()
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- XRRSizes(m_Dpy, m_vInfo->screen, &ReturnV);
|
|
||||||
- if (ReturnV == 0)
|
|
||||||
- {
|
|
||||||
- CLog::Log(LOGDEBUG, "CVideoReferenceClock: RandR not supported");
|
|
||||||
- return false;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- //set up receiving of RandR events, we'll get one when the refreshrate changes
|
|
||||||
- XRRQueryExtension(m_Dpy, &m_RREventBase, &ReturnV);
|
|
||||||
- XRRSelectInput(m_Dpy, RootWindow(m_Dpy, m_vInfo->screen), RRScreenChangeNotifyMask);
|
|
||||||
+ m_DispCallback.Register();
|
|
||||||
|
|
||||||
UpdateRefreshrate(true); //forced refreshrate update
|
|
||||||
m_MissedVblanks = 0;
|
|
||||||
@@ -479,18 +539,7 @@ void CVideoReferenceClock::CleanupGLX()
|
|
||||||
{
|
{
|
||||||
CLog::Log(LOGDEBUG, "CVideoReferenceClock: Cleaning up GLX");
|
CLog::Log(LOGDEBUG, "CVideoReferenceClock: Cleaning up GLX");
|
||||||
|
|
||||||
@ -7276,13 +7202,24 @@ index 83fabfe..a2e6efc 100644
|
|||||||
- AtiWorkaround = true;
|
- AtiWorkaround = true;
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
+ m_DispCallback.Unregister();
|
-
|
||||||
|
|
||||||
if (m_vInfo)
|
if (m_vInfo)
|
||||||
{
|
{
|
||||||
@@ -509,8 +558,7 @@ void CVideoReferenceClock::CleanupGLX()
|
XFree(m_vInfo);
|
||||||
|
@@ -508,9 +528,18 @@ void CVideoReferenceClock::CleanupGLX()
|
||||||
|
XDestroyWindow(m_Dpy, m_Window);
|
||||||
m_Window = 0;
|
m_Window = 0;
|
||||||
}
|
}
|
||||||
|
+ if (m_glPixmap)
|
||||||
|
+ {
|
||||||
|
+ glXDestroyPixmap(m_Dpy, m_glPixmap);
|
||||||
|
+ m_glPixmap = None;
|
||||||
|
+ }
|
||||||
|
+ if (m_pixmap)
|
||||||
|
+ {
|
||||||
|
+ XFreePixmap(m_Dpy, m_pixmap);
|
||||||
|
+ m_pixmap = None;
|
||||||
|
+ }
|
||||||
|
|
||||||
- //ati saves the Display* in their libGL, if we close it here, we crash
|
- //ati saves the Display* in their libGL, if we close it here, we crash
|
||||||
- if (m_Dpy && !AtiWorkaround)
|
- if (m_Dpy && !AtiWorkaround)
|
||||||
@ -7290,7 +7227,7 @@ index 83fabfe..a2e6efc 100644
|
|||||||
{
|
{
|
||||||
XCloseDisplay(m_Dpy);
|
XCloseDisplay(m_Dpy);
|
||||||
m_Dpy = NULL;
|
m_Dpy = NULL;
|
||||||
@@ -532,10 +580,55 @@ void CVideoReferenceClock::RunGLX()
|
@@ -532,10 +561,55 @@ void CVideoReferenceClock::RunGLX()
|
||||||
m_glXGetVideoSyncSGI(&VblankCount);
|
m_glXGetVideoSyncSGI(&VblankCount);
|
||||||
PrevVblankCount = VblankCount;
|
PrevVblankCount = VblankCount;
|
||||||
|
|
||||||
@ -7347,21 +7284,10 @@ index 83fabfe..a2e6efc 100644
|
|||||||
m_glXGetVideoSyncSGI(&VblankCount); //the vblank count returned by glXWaitVideoSyncSGI is not always correct
|
m_glXGetVideoSyncSGI(&VblankCount); //the vblank count returned by glXWaitVideoSyncSGI is not always correct
|
||||||
Now = CurrentHostCounter(); //get the timestamp of this vblank
|
Now = CurrentHostCounter(); //get the timestamp of this vblank
|
||||||
|
|
||||||
@@ -545,6 +638,9 @@ void CVideoReferenceClock::RunGLX()
|
@@ -554,13 +628,14 @@ void CVideoReferenceClock::RunGLX()
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (m_DispCallback.IsReset())
|
|
||||||
+ UpdateRefreshrate(true);
|
|
||||||
+
|
|
||||||
if (VblankCount > PrevVblankCount)
|
|
||||||
{
|
|
||||||
//update the vblank timestamp, update the clock and send a signal that we got a vblank
|
|
||||||
@@ -553,14 +649,14 @@ void CVideoReferenceClock::RunGLX()
|
|
||||||
UpdateClock((int)(VblankCount - PrevVblankCount), true);
|
|
||||||
SingleLock.Leave();
|
SingleLock.Leave();
|
||||||
SendVblankSignal();
|
SendVblankSignal();
|
||||||
- UpdateRefreshrate();
|
UpdateRefreshrate();
|
||||||
-
|
-
|
||||||
IsReset = false;
|
IsReset = false;
|
||||||
}
|
}
|
||||||
@ -7374,82 +7300,20 @@ index 83fabfe..a2e6efc 100644
|
|||||||
//only try reattaching once
|
//only try reattaching once
|
||||||
if (IsReset)
|
if (IsReset)
|
||||||
return;
|
return;
|
||||||
@@ -1082,23 +1178,13 @@ bool CVideoReferenceClock::UpdateRefreshrate(bool Forced /*= false*/)
|
|
||||||
|
|
||||||
#if defined(HAS_GLX) && defined(HAS_XRANDR)
|
|
||||||
|
|
||||||
- //check for RandR events
|
|
||||||
- bool GotEvent = Forced || m_RefreshChanged == 2;
|
|
||||||
- XEvent Event;
|
|
||||||
- while (XCheckTypedEvent(m_Dpy, m_RREventBase + RRScreenChangeNotify, &Event))
|
|
||||||
- {
|
|
||||||
- if (Event.type == m_RREventBase + RRScreenChangeNotify)
|
|
||||||
- {
|
|
||||||
- CLog::Log(LOGDEBUG, "CVideoReferenceClock: Received RandR event %i", Event.type);
|
|
||||||
- GotEvent = true;
|
|
||||||
- }
|
|
||||||
- XRRUpdateConfiguration(&Event);
|
|
||||||
- }
|
|
||||||
+ // the correct refresh rate is always stores in g_settings
|
|
||||||
+ bool bUpdate = Forced || m_RefreshChanged == 2;
|
|
||||||
|
|
||||||
if (!Forced)
|
|
||||||
m_RefreshChanged = 0;
|
|
||||||
|
|
||||||
- if (!GotEvent) //refreshrate did not change
|
|
||||||
+ if (!bUpdate) //refreshrate did not change
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//the refreshrate can be wrong on nvidia drivers, so read it from nvidia-settings when it's available
|
|
||||||
@@ -1119,7 +1205,7 @@ bool CVideoReferenceClock::UpdateRefreshrate(bool Forced /*= false*/)
|
|
||||||
}
|
|
||||||
|
|
||||||
CSingleLock SingleLock(m_CritSection);
|
|
||||||
- m_RefreshRate = GetRandRRate();
|
|
||||||
+ m_RefreshRate = MathUtils::round_int(g_settings.m_ResInfo[g_graphicsContext.GetVideoResolution()].fRefreshRate);
|
|
||||||
|
|
||||||
CLog::Log(LOGDEBUG, "CVideoReferenceClock: Detected refreshrate: %i hertz", (int)m_RefreshRate);
|
|
||||||
|
|
||||||
diff --git a/xbmc/video/VideoReferenceClock.h b/xbmc/video/VideoReferenceClock.h
|
diff --git a/xbmc/video/VideoReferenceClock.h b/xbmc/video/VideoReferenceClock.h
|
||||||
index 9699cd4..ff993ff 100644
|
index 9699cd4..465d313 100644
|
||||||
--- a/xbmc/video/VideoReferenceClock.h
|
--- a/xbmc/video/VideoReferenceClock.h
|
||||||
+++ b/xbmc/video/VideoReferenceClock.h
|
+++ b/xbmc/video/VideoReferenceClock.h
|
||||||
@@ -55,6 +55,29 @@ class CD3DCallback : public ID3DResource
|
@@ -119,9 +119,12 @@ class CVideoReferenceClock : public CThread
|
||||||
|
XVisualInfo *m_vInfo;
|
||||||
#endif
|
Window m_Window;
|
||||||
|
GLXContext m_Context;
|
||||||
+#if defined(HAS_GLX)
|
+ Pixmap m_pixmap;
|
||||||
+#include "guilib/DispResource.h"
|
+ GLXPixmap m_glPixmap;
|
||||||
+class CDisplayCallback : public IDispResource
|
|
||||||
+{
|
|
||||||
+public:
|
|
||||||
+ virtual void OnLostDevice();
|
|
||||||
+ virtual void OnResetDevice();
|
|
||||||
+ void Register();
|
|
||||||
+ void Unregister();
|
|
||||||
+ bool IsReset();
|
|
||||||
+private:
|
|
||||||
+ enum DispState
|
|
||||||
+ {
|
|
||||||
+ DISP_LOST,
|
|
||||||
+ DISP_RESET,
|
|
||||||
+ DISP_OPEN
|
|
||||||
+ };
|
|
||||||
+ DispState m_State;
|
|
||||||
+ CEvent m_DisplayEvent;
|
|
||||||
+ CCriticalSection m_DisplaySection;
|
|
||||||
+};
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
class CVideoReferenceClock : public CThread
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
@@ -122,6 +145,8 @@ class CVideoReferenceClock : public CThread
|
|
||||||
int m_RREventBase;
|
int m_RREventBase;
|
||||||
|
|
||||||
bool m_UseNvSettings;
|
bool m_UseNvSettings;
|
||||||
+ bool m_bIsATI;
|
+ bool m_bIsATI;
|
||||||
+ CDisplayCallback m_DispCallback;
|
|
||||||
|
|
||||||
#elif defined(_WIN32) && defined(HAS_DX)
|
#elif defined(_WIN32) && defined(HAS_DX)
|
||||||
bool SetupD3D();
|
bool SetupD3D();
|
||||||
@ -7590,7 +7454,7 @@ index 62cf554..931700b 100644
|
|||||||
CSingleLock lock(m_resourceSection);
|
CSingleLock lock(m_resourceSection);
|
||||||
|
|
||||||
diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h
|
diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h
|
||||||
index 5b941be..5dfb05e 100644
|
index 5b941be..be59c5c 100644
|
||||||
--- a/xbmc/windowing/X11/WinSystemX11.h
|
--- a/xbmc/windowing/X11/WinSystemX11.h
|
||||||
+++ b/xbmc/windowing/X11/WinSystemX11.h
|
+++ b/xbmc/windowing/X11/WinSystemX11.h
|
||||||
@@ -27,6 +27,7 @@
|
@@ -27,6 +27,7 @@
|
||||||
@ -7601,16 +7465,15 @@ index 5b941be..5dfb05e 100644
|
|||||||
|
|
||||||
class IDispResource;
|
class IDispResource;
|
||||||
|
|
||||||
@@ -60,6 +61,8 @@ public:
|
@@ -60,6 +61,7 @@ public:
|
||||||
// Local to WinSystemX11 only
|
// Local to WinSystemX11 only
|
||||||
Display* GetDisplay() { return m_dpy; }
|
Display* GetDisplay() { return m_dpy; }
|
||||||
GLXWindow GetWindow() { return m_glWindow; }
|
GLXWindow GetWindow() { return m_glWindow; }
|
||||||
+ Window GetwmWindow() { return m_wmWindow; };
|
|
||||||
+ void RefreshWindow();
|
+ void RefreshWindow();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool RefreshGlxContext();
|
bool RefreshGlxContext();
|
||||||
@@ -76,6 +79,9 @@ protected:
|
@@ -76,6 +78,9 @@ protected:
|
||||||
CCriticalSection m_resourceSection;
|
CCriticalSection m_resourceSection;
|
||||||
std::vector<IDispResource*> m_resources;
|
std::vector<IDispResource*> m_resources;
|
||||||
uint64_t m_dpyLostTime;
|
uint64_t m_dpyLostTime;
|
Loading…
x
Reference in New Issue
Block a user