Home | History | Annotate | Download | only in dga

Lines Matching full:bucket

595 	vidmem_bucket *bucket;
600 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
601 printf("Bucket: %p, %d (%s)\n", bucket->base, bucket->size, bucket->used ? "used" : "free");
602 if ( bucket->prev ) {
603 if ( bucket->base != bucket->prev->base+bucket->prev->size ) {
604 printf("Warning, corrupt bucket list! (prev)\n");
607 if ( bucket != &surfaces ) {
608 printf("Warning, corrupt bucket list! (!prev)\n");
611 if ( bucket->next ) {
612 if ( bucket->next->base != bucket->base+bucket->size ) {
613 printf("Warning, corrupt bucket list! (next)\n");
623 vidmem_bucket *bucket;
629 bucket = (vidmem_bucket *)SDL_malloc(sizeof(*bucket));
630 if ( bucket == NULL ) {
634 bucket->prev = &surfaces;
635 bucket->used = 0;
636 bucket->dirty = 0;
637 bucket->base = base;
638 bucket->size = size;
639 bucket->next = NULL;
641 bucket = NULL;
649 surfaces.next = bucket;
655 vidmem_bucket *bucket, *freeable;
657 bucket = surfaces.next;
658 while ( bucket ) {
659 freeable = bucket;
660 bucket = bucket->next;
678 vidmem_bucket *bucket;
684 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
685 bucket->dirty = 0;
691 vidmem_bucket *bucket;
707 fprintf(stderr, "Allocating bucket of %d bytes\n", size);
718 /* Search for an empty bucket big enough */
719 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
720 if ( ! bucket->used && (size <= bucket->size) ) {
724 if ( bucket == NULL ) {
730 /* Create a new bucket for left-over memory */
731 extra = (bucket->size - size);
736 fprintf(stderr, "Adding new free bucket of %d bytes\n", extra);
744 newbucket->prev = bucket;
746 newbucket->base = bucket->base+size;
748 newbucket->next = bucket->next;
749 if ( bucket->next ) {
750 bucket->next->prev = newbucket;
752 bucket->next = newbucket;
755 /* Set the current bucket values and return it! */
756 bucket->used = 1;
757 bucket->size = size;
758 bucket->dirty = 0;
760 fprintf(stderr, "Allocated %d bytes at %p\n", bucket->size, bucket->base);
764 surface->pixels = bucket->base;
765 surface->hwdata = (struct private_hwdata *)bucket;
772 vidmem_bucket *bucket, *freeable;
781 /* Look for the bucket in the current list */
782 for ( bucket=&surfaces; bucket; bucket=bucket->next ) {
783 if ( bucket == (vidmem_bucket *)surface->hwdata ) {
787 if ( bucket && bucket->used ) {
790 printf("Freeing bucket of %d bytes\n", bucket->size);
792 surfaces_memleft += bucket->size;
795 bucket->used = 0;
796 if ( bucket->next && ! bucket->next->used ) {
798 printf("Merging with next bucket, for %d total bytes\n", bucket->size+bucket->next->size);
800 freeable = bucket->next;
801 bucket->size += bucket->next->size;
802 bucket->next = bucket->next->next;
803 if ( bucket->next ) {
804 bucket->next->prev = bucket;
808 if ( bucket->prev && ! bucket->prev->used ) {
810 printf("Merging with previous bucket, for %d total bytes\n", bucket->prev->size+bucket->size);
812 freeable = bucket;
813 bucket->prev->size += bucket->size;
814 bucket->prev->next = bucket->next;
815 if ( bucket->next ) {
816 bucket->next->prev = bucket->prev;
1091 /* Clean up the memory bucket list */