diff options
Diffstat (limited to 'hw/kdrive/ephyr/ephyrhostglx.c')
-rw-r--r-- | hw/kdrive/ephyr/ephyrhostglx.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/hw/kdrive/ephyr/ephyrhostglx.c b/hw/kdrive/ephyr/ephyrhostglx.c index 728687b46..2475c8a7a 100644 --- a/hw/kdrive/ephyr/ephyrhostglx.c +++ b/hw/kdrive/ephyr/ephyrhostglx.c @@ -153,6 +153,10 @@ typedef struct GLXGenericGetString { #define sz_xGLXGenericGetStringReq 12 #define X_GLXGenericGetString 0 +#ifdef DRI2 +extern Bool ephyrNoTFP; +#endif + Bool ephyrHostGLXGetStringFromServer (int a_screen_number, int a_string_name, @@ -166,6 +170,13 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, xGLXSingleReply reply; int length=0, numbytes=0, major_opcode=0, get_string_op=0; +#ifdef DRI2 + const char *glx_texture_from_pixmap = "GLX_EXT_texture_from_pixmap "; + char *start = NULL; + char *end = NULL; + int pos = 0, len = 0; +#endif + EPHYR_RETURN_VAL_IF_FAIL (dpy && a_string, FALSE) ; EPHYR_LOG ("enter\n") ; @@ -232,6 +243,22 @@ ephyrHostGLXGetStringFromServer (int a_screen_number, EPHYR_LOG ("strname:%#x, strvalue:'%s', strlen:%d\n", a_string_name, *a_string, numbytes) ; +#ifdef DRI2 + if (ephyrNoTFP) { + start = strstr(*a_string, glx_texture_from_pixmap); + if (start){ + EPHYR_LOG ("strname:%#x, strvalue:'%s', strlen:%d\n", + a_string_name, *a_string, numbytes) ; + len = strlen(glx_texture_from_pixmap); + pos = start - *a_string; + end = start + strlen(glx_texture_from_pixmap); + memmove(start, end, numbytes + 1 - pos - len); + EPHYR_LOG ("strname:%#x, strvalue:'%s', strlen:%d\n", + a_string_name, *a_string, numbytes) ; + } + } +#endif + is_ok = TRUE ; out: EPHYR_LOG ("leave\n") ; |