… | |
… | |
878 | # split metadata case, FT_MUSIC, FT_SOUND |
878 | # split metadata case, FT_MUSIC, FT_SOUND |
879 | if ($changed) { # new data |
879 | if ($changed) { # new data |
880 | my ($meta, $data) = unpack "(w/a*)*", $face->{data}; |
880 | my ($meta, $data) = unpack "(w/a*)*", $face->{data}; |
881 | $face->{data} = $meta; |
881 | $face->{data} = $meta; |
882 | |
882 | |
|
|
883 | # rely on strict ordering here and also on later fetch |
883 | CFPlus::DB::put res_data => $face->{name} => $data, sub { }; |
884 | CFPlus::DB::put res_data => $face->{name} => $data, sub { }; |
884 | CFPlus::DB::put res_meta => $face->{name} => $meta, sub { }; |
885 | CFPlus::DB::put res_meta => $face->{name} => $meta, sub { }; |
885 | } |
886 | } |
886 | |
887 | |
887 | $face->{data} = $self->{json_coder}->decode ($face->{data}); |
888 | $face->{data} = $self->{json_coder}->decode ($face->{data}); |
888 | |
|
|
889 | ::add_license ($face); |
889 | ::add_license ($face); |
|
|
890 | ::message ({ markup => CFPlus::asxml "downloaded resource '$face->{data}{name}', type $face->{type}." }) |
|
|
891 | if $changed; |
890 | |
892 | |
891 | if ($face->{type} == 3) { # FT_MUSIC |
893 | if ($face->{type} == 3) { # FT_MUSIC |
892 | ::message ({ markup => "downloaded song #$facenum" }) |
|
|
893 | if $changed; |
|
|
894 | |
|
|
895 | &::audio_music_push ($facenum); |
894 | &::audio_music_push ($facenum); |
896 | } elsif ($face->{type} == 5) { # FT_SOUND |
895 | } elsif ($face->{type} == 5) { # FT_SOUND |
897 | ::message ({ markup => "downloaded sound #$facenum" }) |
|
|
898 | if $changed; |
|
|
899 | |
|
|
900 | &::audio_sound_push ($facenum); |
896 | &::audio_sound_push ($facenum); |
901 | } |
897 | } |
902 | |
898 | |
903 | } else { |
899 | } else { |
904 | # flat resource case, FT_RSRC |
900 | # flat resource case, FT_RSRC |