Commit 3de32eb6 authored by Marc Lehmann's avatar Marc Lehmann
Browse files

see plug-ins/perl/Changes

parent e1c68749
Revision history for Gimp-Perl extension.
1.18
1.19 Thu Jan 6 00:21:58 CET 2000
- used N_ to mark all the menu paths, since gimp now tries to
do the translation.
- patch by Frank Loemker <floemker@TechFak.Uni-Bielefeld.DE> to fix
......@@ -41,6 +41,8 @@ Revision history for Gimp-Perl extension.
- Net.xs didn't compile without PDL.
- applied (but did not test) UI patch by Sven.
- fixed stupid non-ansi errors in Gimp/Lib.xs.
- make raw pixel data functions accessible over the network by
fixing the remaining bugs in Gimp::Net. PDL's still don't work.
1.17 Wed Nov 24 21:25:19 CET 1999
- re-fitted i18n translation for most plug-ins.
......
......@@ -10,7 +10,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD %EXPORT_TAGS @EXPORT_FAIL
use subs qw(init end lock unlock canonicalize_color);
BEGIN {
$VERSION = 1.18;
$VERSION = 1.19;
eval {
require XSLoader;
XSLoader::load Gimp $VERSION;
......
......@@ -43,7 +43,7 @@ Gimp-Perl extension (contact him to include new functions) is Marc Lehmann
package Gimp::Compat;
$VERSION=1.18;
$VERSION=1.19;
use Gimp ('croak', '__');
......
......@@ -4,7 +4,7 @@ use strict;
use vars qw($VERSION @ISA);
BEGIN {
$VERSION = 1.18;
$VERSION = 1.19;
eval {
require XSLoader;
XSLoader::load Gimp::Lib $VERSION;
......
......@@ -19,7 +19,7 @@ package Gimp::Module;
use base qw(DynaLoader);
require DynaLoader;
$VERSION=1.18;
$VERSION=1.19;
bootstrap Gimp::Module;
......
package Gimp::Pod;
$VERSION=1.18;
$VERSION=1.19;
sub myqx(&) {
local $/;
......
......@@ -51,7 +51,7 @@ require Exporter;
use Gimp;
$VERSION=1.18;
$VERSION=1.19;
##############################################################################
=pod
......
......@@ -14,8 +14,10 @@ $GIMP_INC_NOUI = "-I../../.. $GIMP_INC_NOUI" if $IN_GIMP;
WriteMakefile(
'NAME' => 'Gimp::Net',
'VERSION_FROM' => '../Gimp.pm',
'INC' => "$INC1 $CPPFLAGS $pdl_inc $cfg{GLIB_CFLAGS} $CFLAGS",
#'INC' => "$INC1 $CPPFLAGS $pdl_inc $cfg{GLIB_CFLAGS} $CFLAGS",
'INC' => "$INC1 $CPPFLAGS $pdl_inc $CFLAGS",
'DEFINE' => "$DEFINE1 $DEFS",
'TYPEMAPS' => ["$topdir/typemap",@pdl_typemaps],
dynamic_lib => { OTHERLDFLAGS => "$LDFLAGS $LIBS $cfg{GLIB_LIBS}" },
#dynamic_lib => { OTHERLDFLAGS => "$LDFLAGS $LIBS $cfg{GLIB_LIBS}" },
dynamic_lib => { OTHERLDFLAGS => "$LDFLAGS $LIBS" },
);
......@@ -19,7 +19,7 @@ use Gimp ('croak','__');
require DynaLoader;
$VERSION = 1.18;
$VERSION = 1.19;
bootstrap Gimp::Net $VERSION;
......@@ -45,6 +45,10 @@ sub import {
*Gimp::GDrawable::DESTROY=sub {
my $req="DTRY".args2net(0,@_);
print $server_fh pack("N",length($req)).$req;
# make this synchronous to avoid deadlock due to using non sys*-type functions
my $len;
read($server_fh,$len,4) == 4 or die "protocol error (11)";
};
}
......@@ -71,9 +75,9 @@ sub command {
print $server_fh pack("N",length($req)).$req;
}
my($len,@args,$trace,$req); # small speedup, these are really local to gimp_call_procedure
sub gimp_call_procedure {
my($len,@args,$trace,$req);
if ($trace_level) {
$req="TRCE".args2net(0,$trace_level,@_);
print $server_fh pack("N",length($req)).$req;
......
......@@ -13,7 +13,9 @@
# undef printf
#endif
#if 0 /* optimized away ;) */
#include <glib.h>
#endif
#if !defined(PERLIO_IS_STDIO) && defined(HASATTRIBUTE)
# define printf PerlIO_stdoutf
......@@ -54,10 +56,10 @@ static void need_pdl (void)
|| strEQ ((sv), "Gimp::PixelRgn") \
|| strEQ ((sv), "Gimp::GDrawable"))
static GHashTable *object_cache;
static gint object_id = 1000;
static HV *object_cache;
static int object_id = 100;
#define init_object_cache if (!object_cache) object_cache = g_hash_table_new (g_int_hash, g_int_equal)
#define init_object_cache if (!object_cache) object_cache = newHV()
static void destroy_object (SV *sv)
{
......@@ -65,13 +67,8 @@ static void destroy_object (SV *sv)
{
if (is_dynamic (HvNAME(SvSTASH(SvRV(sv)))))
{
gint id = SvIV(SvRV(sv));
SV *cv = (SV*)g_hash_table_lookup (object_cache, &id);
if (cv)
{
SvREFCNT_dec (cv);
g_hash_table_remove (object_cache, &id);
}
int id = SvIV(SvRV(sv));
hv_delete (object_cache, (char *)&id, sizeof(id), G_DISCARD);
}
else
croak (__("Internal error: Gimp::Net #101, please report!"));
......@@ -117,7 +114,7 @@ static void sv2net (int deobjectify, SV *s, SV *sv)
object_id++;
SvREFCNT_inc(sv);
g_hash_table_insert (object_cache, &object_id, (gpointer)sv);
hv_store (object_cache, (char *)&object_id, sizeof(object_id), sv, 0);
sv_catpvf (s, "i%d:", object_id);
return; /* well... */
......@@ -200,18 +197,20 @@ static SV *net2sv (int objectify, char **_s)
if (objectify && is_dynamic (str))
{
gint id;
SV **cv;
int id;
sscanf (s, "i%ld:%n", &l, &n); s += n;
sv = (SV*)g_hash_table_lookup (object_cache, (id=l,&id));
if (!sv)
cv = hv_fetch (object_cache, (char *)(id=l,&id), sizeof(id), 0);
if (!cv)
croak (__("Internal error: asked to deobjectify an object not in the cache, please report!"));
sv = *cv;
SvREFCNT_inc (sv);
}
else
sv = net2sv (objectify, &s);
sv = sv_bless (newRV_noinc (sv), gv_stashpv (str, 1));
sv = sv_bless (newRV_noinc (net2sv (objectify, &s)), gv_stashpv (str, 1));
break;
......
......@@ -70,15 +70,15 @@ sub handle_request($) {
my($length,$req,$data,@args,$trace_level);
eval {
local $SIG{ALRM}=sub { die "\n" };
local $SIG{ALRM}=sub { die "1\n" };
#alarm(6) unless $ps_flags & &Gimp::_PS_FLAG_BATCH;
read($fh,$length,4) == 4 or die "\n";
read($fh,$length,4) == 4 or die "2\n";
$length=unpack("N",$length);
$length>0 && $length<$max_pkt or die "\n";
$length>0 && $length<$max_pkt or die "3\n";
#alarm(6) unless $ps_flags & &Gimp::_PS_FLAG_BATCH;
read($fh,$req,4) == 4 or die "\n";
read($fh,$req,4) == 4 or die "4\n";
#alarm(20) unless $ps_flags & &Gimp::_PS_FLAG_BATCH;
read($fh,$data,$length-4) == $length-4 or die "\n";
read($fh,$data,$length-4) == $length-4 or die "5\n";
#alarm(0);
};
return 0 if $@;
......@@ -95,6 +95,7 @@ sub handle_request($) {
print $fh (defined(*{"Gimp::Lib::$data"}{CODE}) || Gimp::_gimp_procedure_available($data)) ? "1" : "0";
} elsif ($req eq "DTRY") {
Gimp::Net::destroy_objects Gimp::Net::net2args 0,$data;
print $fh pack("N",0); # fix to work around using non-sysread/write functions
} elsif($req eq "TRCE") {
no strict 'refs';
($trace_level,$req,@args)=Gimp::Net::net2args 1,$data;
......@@ -305,7 +306,7 @@ Gimp::on_query {
Gimp->install_procedure("extension_perl_server", "Start the Gimp-Perl Server",
"This is the server for plug-ins written using the Gimp::Net module",
"Marc Lehmann <pcg\@goof.com>", "Marc Lehmann", "1999-12-02",
N_"<Toolbox>/Xtns/Perl/Server", "*",&Gimp::PROC_EXTENSION,
N_"<Toolbox>/Xtns/Perl/Server", "*", &Gimp::PROC_EXTENSION,
[
[&Gimp::PARAM_INT32, "run_mode", "Interactive, [non-interactive]"],
[&Gimp::PARAM_INT32, "flags", "internal flags (must be 0)"],
......@@ -316,7 +317,7 @@ Gimp::on_query {
"Plug-ins should register their custom constants using this function, so".
"other plug-ins (notably script-languages) can access these using symbolic names",
"Marc Lehmann <pcg\@goof.com>", "Marc Lehmann", "1999-07-07",
undef, "*",&Gimp::PROC_EXTENSION,
undef, "*" ,&Gimp::PROC_EXTENSION,
[
[&Gimp::PARAM_STRING, "procedure", "The name of the function that uses this constant"],
[&Gimp::PARAM_STRING, "arg_num", "The name of the argument that this constant is used for"],
......@@ -326,7 +327,7 @@ Gimp::on_query {
Gimp->install_procedure("gimp_procedural_db_set_default", "Set the default value for a plug-in argument",
"Plug-ins should register default values for their arguments",
"Marc Lehmann <pcg\@goof.com>", "Marc Lehmann", "1999-07-07",
undef, "*",&Gimp::PROC_EXTENSION,
undef, "*" ,&Gimp::PROC_EXTENSION,
[
[&Gimp::PARAM_STRING, "procedure", "The name of the function that uses this constant"],
[&Gimp::PARAM_STRING, "arg_num", "The name of the argument that this constant is used for"],
......
......@@ -6,7 +6,7 @@ use Gtk;
use base 'DynaLoader';
BEGIN {
$VERSION = 1.18;
$VERSION = 1.19;
eval {
require XSLoader;
XSLoader::load Gimp::UI $VERSION;
......
......@@ -3,7 +3,7 @@ package Gimp::basewidget; # pragma
use Gimp;
use Gtk;
$VERSION = 1.18;
$VERSION = 1.19;
=head1 NAME
......
......@@ -8,13 +8,13 @@ use Gimp::Util;
# These are a couple of one-liners that you might find handy. Both should
# be undoable w/o any special magick, and work with any gimp.
register "layer_to_image_size", "Layer2ImageSize", "Expands layer to image size",
"Seth Burgess", "Seth Burgess <sjburges\@gimp.org>", "1.0",
N_"<Image>/Layers/Layer to Image Size", "RGB*, GRAY*", [ ], sub {
($img, $layer) = @_;
$layer->resize($img->width, $img->height, $layer->offsets);
return();
};
#register "layer_to_image_size", "Layer2ImageSize", "Expands layer to image size",
# "Seth Burgess", "Seth Burgess <sjburges\@gimp.org>", "1.0",
# N_"<Image>/Layers/Layer to Image Size", "RGB*, GRAY*", [ ], sub {
# ($img, $layer) = @_;
# $layer->resize($img->width, $img->height, $layer->offsets);
# return();
#};
register "center_layer", "Center Layer",
"Centers the current layer on the image",
......
......@@ -3,7 +3,7 @@
# sent to me by Seth Burgess <sjburges@gimp.org>
# small changes my Marc Lehmann <pcg@goof.com>
use Gimp qw(:auto __ N_);
use Gimp qw(:auto N_ __);
use Gimp::Fu;
#Gimp::set_trace(TRACE_CALL);
......@@ -51,7 +51,7 @@ register
"Seth Burgess",
"Seth Burgess <sjburges\@gimp.org>",
"1998-09-14",
N_"<Image>/Filters/Distorts/Windify",
N_"<Image>/Filters/Distorts/Windify...",
"*",
[
[PF_INT32, "angle", "Wind Angle, 0 is left", 120],
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment