mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
mapi: do not call thread-unsafe dispatch getter
When not using the USE_ELF_TLS code-path, this function is thread-unsafe, because it returns u_current_table if set without consulting the ThreadSafe variable in u_current.c. There's a short period where this can cause problems, if a program uses multiple threads, but only have made a single context current so far. If the program issues OpenGL commands from the initialized thread while a new thread is setting u_current_table to __glapi_noop_table, we will return the wrong table here. It doesn't seem right to have two versions of the code that does the same anyway, so let's use the version that doesn't have this problem instead. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7280>
This commit is contained in:
parent
65d6f258c5
commit
61d40ae4d0
2 changed files with 1 additions and 12 deletions
|
|
@ -67,7 +67,7 @@ entry_current_get(void)
|
|||
#ifdef MAPI_MODE_BRIDGE
|
||||
return GET_DISPATCH();
|
||||
#else
|
||||
return u_current_get_table();
|
||||
return u_current_get_table_internal();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,15 +62,4 @@ u_current_set_context(const void *ptr);
|
|||
void *
|
||||
u_current_get_context_internal(void);
|
||||
|
||||
static inline const struct _glapi_table *
|
||||
u_current_get_table(void)
|
||||
{
|
||||
#ifdef USE_ELF_TLS
|
||||
return u_current_table;
|
||||
#else
|
||||
return (likely(u_current_table) ?
|
||||
u_current_table : u_current_get_table_internal());
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _U_CURRENT_H_ */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue