… | |
… | |
3514 | |
3514 | |
3515 | { |
3515 | { |
3516 | my $res = $facedata->{resource}; |
3516 | my $res = $facedata->{resource}; |
3517 | |
3517 | |
3518 | while (my ($name, $info) = each %$res) { |
3518 | while (my ($name, $info) = each %$res) { |
3519 | if (defined (my $type = delete $info->{type})) { |
3519 | if (defined (my $type = $info->{type})) { |
3520 | # TODO: different hash - must free and use new index, or cache ixface data queue |
3520 | # TODO: different hash - must free and use new index, or cache ixface data queue |
3521 | my $idx = (cf::face::find $name) || cf::face::alloc $name; |
3521 | my $idx = (cf::face::find $name) || cf::face::alloc $name; |
3522 | |
3522 | |
3523 | cf::face::set_data $idx, 0, delete $info->{data}, delete $info->{hash}; |
3523 | cf::face::set_data $idx, 0, $info->{data}, $info->{hash}; |
3524 | cf::face::set_type $idx, $type; |
3524 | cf::face::set_type $idx, $type; |
3525 | cf::face::set_meta $idx, (keys %$info && (~$type & 1)) ? $info : undef; # any keys left are stashed into meta unless prepended |
3525 | cf::face::set_meta $idx, $type & 1 ? undef : $info->{meta}; # any keys left are stashed into meta unless prepended |
3526 | } else { |
3526 | } else { |
3527 | # $RESOURCE{$name} = $info; # unused |
3527 | # $RESOURCE{$name} = $info; # unused |
3528 | } |
3528 | } |
3529 | |
3529 | |
3530 | cf::cede_to_tick; |
3530 | cf::cede_to_tick; |