mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-26 14:41:25 +00:00
Make sure empty structure are ABI compatible
Empty structure are not really portable however adding an zero size array seems to be the way to have a zero size structure portably. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
parent
2f7474427b
commit
6db395dc74
@ -133,6 +133,7 @@ typedef struct RedWorkerMessageDelMemslot {
|
||||
} RedWorkerMessageDelMemslot;
|
||||
|
||||
typedef struct RedWorkerMessageDestroySurfaces {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageDestroySurfaces;
|
||||
|
||||
typedef struct RedWorkerMessageDestroySurfacesAsync {
|
||||
@ -161,18 +162,23 @@ typedef struct RedWorkerMessageCreatePrimarySurface {
|
||||
} RedWorkerMessageCreatePrimarySurface;
|
||||
|
||||
typedef struct RedWorkerMessageResetImageCache {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageResetImageCache;
|
||||
|
||||
typedef struct RedWorkerMessageResetCursor {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageResetCursor;
|
||||
|
||||
typedef struct RedWorkerMessageWakeup {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageWakeup;
|
||||
|
||||
typedef struct RedWorkerMessageOom {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageOom;
|
||||
|
||||
typedef struct RedWorkerMessageStart {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageStart;
|
||||
|
||||
typedef struct RedWorkerMessageFlushSurfacesAsync {
|
||||
@ -180,6 +186,7 @@ typedef struct RedWorkerMessageFlushSurfacesAsync {
|
||||
} RedWorkerMessageFlushSurfacesAsync;
|
||||
|
||||
typedef struct RedWorkerMessageStop {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageStop;
|
||||
|
||||
/* this command is sync, so it's ok to pass a pointer */
|
||||
@ -224,12 +231,15 @@ typedef struct RedWorkerMessageMonitorsConfigAsync {
|
||||
} RedWorkerMessageMonitorsConfigAsync;
|
||||
|
||||
typedef struct RedWorkerMessageDriverUnload {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageDriverUnload;
|
||||
|
||||
typedef struct RedWorkerMessageGlScanout {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageGlScanout;
|
||||
|
||||
typedef struct RedWorkerMessageClose {
|
||||
uint8_t dummy_empty_field[0]; // C/C++ compatibility
|
||||
} RedWorkerMessageClose;
|
||||
|
||||
typedef struct RedWorkerMessageGlDraw {
|
||||
|
||||
@ -30,12 +30,14 @@ typedef struct {
|
||||
#ifdef RED_STATISTICS
|
||||
uint64_t *counter;
|
||||
#endif
|
||||
uint8_t dummy_empty_field[0]; /* C/C++ compatibility */
|
||||
} RedStatCounter;
|
||||
|
||||
typedef struct {
|
||||
#ifdef RED_STATISTICS
|
||||
uint32_t ref;
|
||||
#endif
|
||||
uint8_t dummy_empty_field[0]; /* C/C++ compatibility */
|
||||
} RedStatNode;
|
||||
|
||||
#ifdef RED_STATISTICS
|
||||
@ -95,6 +97,7 @@ typedef struct {
|
||||
#if defined(RED_WORKER_STAT) || defined(COMPRESS_STAT)
|
||||
stat_time_t time;
|
||||
#endif
|
||||
uint8_t dummy_empty_field[0]; /* C/C++ compatibility */
|
||||
} stat_start_time_t;
|
||||
|
||||
#if defined(RED_WORKER_STAT) || defined(COMPRESS_STAT)
|
||||
@ -117,6 +120,7 @@ typedef struct {
|
||||
uint64_t comp_size;
|
||||
#endif
|
||||
#endif
|
||||
uint8_t dummy_empty_field[0]; /* C/C++ compatibility */
|
||||
} stat_info_t;
|
||||
|
||||
static inline void stat_start_time_init(G_GNUC_UNUSED stat_start_time_t *tm,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user