Ok, I resolved the problem myself now. Because it worked in windowed mode, I just made sure it was allways windowed. Then I used Devilspie (a window config program for GNOME) to make XBMC fullscreen. (Just removes windows decorations, etc.)
Also, XBMC lacks a way of right clicking for touchscreens, so I just hacked it a bit, so that when you click in the upper bar (y <= 30), it is a right click. I edited this in SDLMouse so it works everywhere, but it may not be the most elegant way.
For those interested, this is the SVN diff:
Code:
Index: guilib/GraphicContext.cpp
===================================================================
--- guilib/GraphicContext.cpp (revision 10668)
+++ guilib/GraphicContext.cpp (working copy)
@@ -391,6 +391,7 @@
void CGraphicContext::SetFullScreenVideo(bool bOnOff)
{
+ bOnOff = false;
Lock();
m_bFullScreenVideo = bOnOff;
SetFullScreenViewWindow(m_Resolution);
@@ -583,7 +584,7 @@
CLog::Log(LOGERROR, "The screen resolution requested is not valid, resetting to a valid mode");
res = g_videoConfig.GetSafeMode();
}
- if (res>=DESKTOP)
+ if (res>DESKTOP)
{
g_advancedSettings.m_fullScreen = 1;
m_bFullScreenRoot = true;
Index: guilib/common/SDLMouse.cpp
===================================================================
--- guilib/common/SDLMouse.cpp (revision 10668)
+++ guilib/common/SDLMouse.cpp (working copy)
@@ -46,8 +46,8 @@
}
// Fill in the public members
- state.button[MOUSE_LEFT_BUTTON] = (mouseState & SDL_BUTTON(1)) == SDL_BUTTON(1);
- state.button[MOUSE_RIGHT_BUTTON] = (mouseState & SDL_BUTTON(3)) == SDL_BUTTON(3);
+ state.button[MOUSE_LEFT_BUTTON] = ((mouseState & SDL_BUTTON(1)) == SDL_BUTTON(1)) && (state.y > 30);
+ state.button[MOUSE_RIGHT_BUTTON] = ((mouseState & SDL_BUTTON(3)) == SDL_BUTTON(3)) || (state.y <= 30 && (mouseState & SDL_BUTTON(1)) == SDL_BUTTON(1) );
state.button[MOUSE_MIDDLE_BUTTON] = (mouseState & SDL_BUTTON(2)) == SDL_BUTTON(2);
state.button[MOUSE_EXTRA_BUTTON1] = (mouseState & SDL_BUTTON(4)) == SDL_BUTTON(4);
state.button[MOUSE_EXTRA_BUTTON2] = (mouseState & SDL_BUTTON(5)) == SDL_BUTTON(5);