Home | History | Annotate | Download | only in fbcon

Lines Matching full:bucket

1079 	vidmem_bucket *bucket;
1084 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
1085 printf("Bucket: %p, %d (%s)\n", bucket->base, bucket->size, bucket->used ? "used" : "free");
1086 if ( bucket->prev ) {
1087 if ( bucket->base != bucket->prev->base+bucket->prev->size ) {
1088 printf("Warning, corrupt bucket list! (prev)\n");
1091 if ( bucket != &surfaces ) {
1092 printf("Warning, corrupt bucket list! (!prev)\n");
1095 if ( bucket->next ) {
1096 if ( bucket->next->base != bucket->base+bucket->size ) {
1097 printf("Warning, corrupt bucket list! (next)\n");
1107 vidmem_bucket *bucket;
1113 bucket = (vidmem_bucket *)SDL_malloc(sizeof(*bucket));
1114 if ( bucket == NULL ) {
1118 bucket->prev = &surfaces;
1119 bucket->used = 0;
1120 bucket->dirty = 0;
1121 bucket->base = base;
1122 bucket->size = size;
1123 bucket->next = NULL;
1125 bucket = NULL;
1133 surfaces.next = bucket;
1139 vidmem_bucket *bucket, *freeable;
1141 bucket = surfaces.next;
1142 while ( bucket ) {
1143 freeable = bucket;
1144 bucket = bucket->next;
1152 vidmem_bucket *bucket;
1168 fprintf(stderr, "Allocating bucket of %d bytes\n", size);
1177 /* Search for an empty bucket big enough */
1178 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
1179 if ( ! bucket->used && (size <= bucket->size) ) {
1183 if ( bucket == NULL ) {
1188 /* Create a new bucket for left-over memory */
1189 extra = (bucket->size - size);
1194 fprintf(stderr, "Adding new free bucket of %d bytes\n", extra);
1201 newbucket->prev = bucket;
1203 newbucket->base = bucket->base+size;
1205 newbucket->next = bucket->next;
1206 if ( bucket->next ) {
1207 bucket->next->prev = newbucket;
1209 bucket->next = newbucket;
1212 /* Set the current bucket values and return it! */
1213 bucket->used = 1;
1214 bucket->size = size;
1215 bucket->dirty = 0;
1217 fprintf(stderr, "Allocated %d bytes at %p\n", bucket->size, bucket->base);
1221 surface->pixels = bucket->base;
1222 surface->hwdata = (struct private_hwdata *)bucket;
1227 vidmem_bucket *bucket, *freeable;
1229 /* Look for the bucket in the current list */
1230 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
1231 if ( bucket == (vidmem_bucket *)surface->hwdata ) {
1235 if ( bucket && bucket->used ) {
1238 printf("Freeing bucket of %d bytes\n", bucket->size);
1240 surfaces_memleft += bucket->size;
1243 bucket->used = 0;
1244 if ( bucket->next && ! bucket->next->used ) {
1246 printf("Merging with next bucket, for %d total bytes\n", bucket->size+bucket->next->size);
1248 freeable = bucket->next;
1249 bucket->size += bucket->next->size;
1250 bucket->next = bucket->next->next;
1251 if ( bucket->next ) {
1252 bucket->next->prev = bucket;
1256 if ( bucket->prev && ! bucket->prev->used ) {
1258 printf("Merging with previous bucket, for %d total bytes\n", bucket->prev->size+bucket->size);
1260 freeable = bucket;
1261 bucket->prev->size += bucket->size;
1262 bucket->prev->next = bucket->next;
1263 if ( bucket->next ) {
1264 bucket->next->prev = bucket->prev;
1674 /* Clean up the memory bucket list */