Skip to content

Commit 1836571

Browse files
cepelinas9000metux
authored andcommitted
[PR #3471] Xext/glx: exports symbols to make extension shared
In a987fc7 commit glx library is statically linked which makes all glx library variables dublicated in glx.so and glamoregl.so files and leads 'split-brain' problem where same symbols exist in different depending on context (this evident when it called using functions with static attribute). This patch exports neccesary glx symbols for glamor library. Signed-off-by: Tautvis <gtautvis@gmail.com> (cherry picked from commit 9b74a3a) PR: #3471
1 parent f4afd35 commit 1836571

5 files changed

Lines changed: 21 additions & 3 deletions

File tree

Xext/glx/extension_string.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
#ifndef GLX_EXTENSION_STRING_H
3535
#define GLX_EXTENSION_STRING_H
3636

37+
#include <X11/Xfuncproto.h>
38+
3739
enum {
3840
/* GLX_ARB_get_proc_address is implemented on the client. */
3941
ARB_context_flush_control_bit = 0,
@@ -74,9 +76,16 @@ enum {
7476

7577
#define __GLX_EXT_BYTES ((__NUM_GLX_EXTS + 7) / 8)
7678

79+
/* exported for glamor */
80+
_X_EXPORT
7781
extern int __glXGetExtensionString(const unsigned char *enable_bits,
7882
char *buffer);
83+
/* exported for glamor */
84+
_X_EXPORT
7985
extern void __glXEnableExtension(unsigned char *enable_bits, const char *ext);
86+
87+
/* exported for glamor */
88+
_X_EXPORT
8089
extern void __glXInitExtensionEnableBits(unsigned char *enable_bits);
8190

8291
#endif /* GLX_EXTENSION_STRING_H */

Xext/glx/glxscreens.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,10 @@ struct __GLXscreen {
146146
unsigned char glx_enable_bits[__GLX_EXT_BYTES];
147147
};
148148

149-
void __glXScreenInit(__GLXscreen * screen, ScreenPtr pScreen);
150-
void __glXScreenDestroy(__GLXscreen * screen);
149+
/* exported for glamor */
150+
_X_EXPORT void __glXScreenInit(__GLXscreen * screen, ScreenPtr pScreen);
151+
152+
/* exported for glamor */
153+
_X_EXPORT void __glXScreenDestroy(__GLXscreen * screen);
151154

152155
#endif /* !__GLX_screens_h__ */

Xext/glx/glxserver.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ void glxResumeClients(void);
9393

9494
typedef void (*glx_func_ptr)(void);
9595
typedef glx_func_ptr (*glx_gpa_proc)(const char *);
96-
void __glXsetGetProcAddress(glx_gpa_proc get_proc_address);
96+
97+
/* exported for glamor */
98+
_X_EXPORT void __glXsetGetProcAddress(glx_gpa_proc get_proc_address);
9799
void *__glGetProcAddress(const char *);
98100

99101
void

Xext/glx/glxutil.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
#include "Xext/glx/glxserver.h"
3535

36+
/* exported for glamor */
37+
_X_EXPORT
3638
extern GLboolean __glXDrawableInit(__GLXdrawable * drawable,
3739
__GLXscreen * screen,
3840
DrawablePtr pDraw, int type, XID drawID,

include/glx_extinit.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ struct __GLXprovider {
4141
};
4242
extern __GLXprovider __glXDRISWRastProvider;
4343

44+
/* exported for glamor */
45+
_X_EXPORT
4446
void GlxPushProvider(__GLXprovider * provider);
4547
void xorgGlxCreateVendor(void);
4648

0 commit comments

Comments
 (0)