mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	examples: fix modifier handling
Use a preallocated array of modifiers instead of using a dynamically allocated one that is too small.
This commit is contained in:
		
							parent
							
								
									74646d1be5
								
							
						
					
					
						commit
						5b23adbb65
					
				
					 1 changed files with 3 additions and 4 deletions
				
			
		| 
						 | 
					@ -45,6 +45,7 @@
 | 
				
			||||||
#define HEIGHT  480
 | 
					#define HEIGHT  480
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MAX_BUFFERS	64
 | 
					#define MAX_BUFFERS	64
 | 
				
			||||||
 | 
					#define MAX_MOD		8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sdl.h"
 | 
					#include "sdl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,7 +62,7 @@ struct pw_version {
 | 
				
			||||||
struct modifier_info {
 | 
					struct modifier_info {
 | 
				
			||||||
        uint32_t spa_format;
 | 
					        uint32_t spa_format;
 | 
				
			||||||
        uint32_t n_modifiers;
 | 
					        uint32_t n_modifiers;
 | 
				
			||||||
        uint64_t *modifiers;
 | 
					        uint64_t modifiers[MAX_MOD];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct data {
 | 
					struct data {
 | 
				
			||||||
| 
						 | 
					@ -83,7 +84,7 @@ struct data {
 | 
				
			||||||
	struct spa_rectangle size;
 | 
						struct spa_rectangle size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	uint32_t n_mod_info;
 | 
						uint32_t n_mod_info;
 | 
				
			||||||
	struct modifier_info mod_info[1];
 | 
						struct modifier_info mod_info[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int counter;
 | 
						int counter;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -107,14 +108,12 @@ static void init_modifiers(struct data *data)
 | 
				
			||||||
	data->n_mod_info = 1;
 | 
						data->n_mod_info = 1;
 | 
				
			||||||
	data->mod_info[0].spa_format = SPA_VIDEO_FORMAT_RGB;
 | 
						data->mod_info[0].spa_format = SPA_VIDEO_FORMAT_RGB;
 | 
				
			||||||
	data->mod_info[0].n_modifiers = 2;
 | 
						data->mod_info[0].n_modifiers = 2;
 | 
				
			||||||
	data->mod_info[0].modifiers = (uint64_t*)malloc(2*sizeof(uint32_t));
 | 
					 | 
				
			||||||
	data->mod_info[0].modifiers[0] = DRM_FORMAT_MOD_LINEAR;
 | 
						data->mod_info[0].modifiers[0] = DRM_FORMAT_MOD_LINEAR;
 | 
				
			||||||
	data->mod_info[0].modifiers[1] = DRM_FORMAT_MOD_INVALID;
 | 
						data->mod_info[0].modifiers[1] = DRM_FORMAT_MOD_INVALID;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void destroy_modifiers(struct data *data)
 | 
					static void destroy_modifiers(struct data *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	free(data->mod_info[0].modifiers);
 | 
					 | 
				
			||||||
	data->mod_info[0].n_modifiers = 0;
 | 
						data->mod_info[0].n_modifiers = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue