openbsd-ports/audio/squeezecenter/patches/patch-Slim_Utils_Accessor_pm
2011-03-02 08:35:14 +00:00

62 lines
1.6 KiB
Plaintext

$OpenBSD: patch-Slim_Utils_Accessor_pm,v 1.1 2011/03/02 08:35:14 sthen Exp $
don't rely on Class::XSAccessor internals; taken from newer squeezeboxserver
--- Slim/Utils/Accessor.pm.orig Mon Jan 24 19:59:11 2011
+++ Slim/Utils/Accessor.pm Mon Jan 24 19:59:17 2011
@@ -37,9 +37,13 @@ BEGIN {
$hasXS = 0;
eval {
require Class::XSAccessor::Array;
- die if $Class::XSAccessor::Array::VERSION lt '0.05';
+ die if $Class::XSAccessor::Array::VERSION lt '1.05';
$hasXS = 1;
};
+
+ if ( $@ ) {
+ warn "NOTE: Class::XSAccessor 1.05+ not found, install it for better performance\n";
+ }
return $hasXS;
}
@@ -94,8 +98,9 @@ sub mk_accessor {
if ($type eq 'rw') {
if ( hasXS() ) {
- Class::XSAccessor::Array::_generate_accessor(
- $class, $field, $n, 0, 0, 'accessor',
+ Class::XSAccessor::Array->import(
+ class => $class,
+ accessors => { $field, $n }
);
}
else {
@@ -108,8 +113,9 @@ sub mk_accessor {
} elsif ($type eq 'ro') {
if ( hasXS() ) {
- Class::XSAccessor::Array::_generate_accessor(
- $class, $field, $n, 0, 0, 'getter',
+ Class::XSAccessor::Array->import(
+ class => $class,
+ getters => { $field, $n }
);
}
else {
@@ -152,6 +158,15 @@ sub mk_accessor {
return $_[0]->[$n]->{ $_[1] } = $_[2] if @_ == 3;
};
+ } elsif ($type eq 'rw_bt') {
+
+ $accessor = sub {
+ return $_[0]->[$n] if @_ == 1;
+ if (@_ == 2) {
+ logBacktrace("$class ->$field set to $_[1]");
+ return $_[0]->[$n] = $_[1];
+ }
+ };
}
if ($accessor) {