ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/Mozilla-Plugin/Plugin.pm
(Generate patch)

Comparing cvsroot/Mozilla-Plugin/Plugin.pm (file contents):
Revision 1.5 by root, Sat Feb 24 01:48:38 2001 UTC vs.
Revision 1.6 by root, Sun Feb 25 12:04:43 2001 UTC

23$VERSION = 0.01; 23$VERSION = 0.01;
24@EXPORT = qw(); 24@EXPORT = qw();
25 25
26#XSLoader::load __PACKAGE__, $VERSION; 26#XSLoader::load __PACKAGE__, $VERSION;
27use Data::Dumper;#d# 27use Data::Dumper;#d#
28
29my $interface; # Mozilla::Plugin::xxx (design weakness)
28 30
29my $data; 31my $data;
30 32
31sub BIAS() { -2000000000 } # ugliest hack ever seen 33sub BIAS() { -2000000000 } # ugliest hack ever seen
32 34
116plug-in is also not very viable, so in the future one might be able to 118plug-in is also not very viable, so in the future one might be able to
117specify a group on the embed statement (i.e. EMBED GROUP="gtk+"). 119specify a group on the embed statement (i.e. EMBED GROUP="gtk+").
118 120
119=cut 121=cut
120 122
121sub server_fh() { *FD } 123sub server_fh() { \*FD }
122 124
123sub server_event() { 125sub server_event() {
124 my $cmd = rcv_cmd; 126 my $cmd = rcv_cmd;
125 127
126 warn "cmd<$cmd>\n";#d# 128 warn "cmd<$cmd>\n";#d#
137 my ($argn, $argv) = (rcv_blk, rcv_blk); 139 my ($argn, $argv) = (rcv_blk, rcv_blk);
138 $args{$argn} = $argv; 140 $args{$argn} = $argv;
139 } 141 }
140 142
141 warn "new obj $objid\n";#d# 143 warn "new obj $objid\n";#d#
142 $_OBJ{$objid} = new Mozilla::Plugin 144 $_OBJ{$objid} = $interface->new(
143 objid => $objid, 145 objid => $objid,
144 type => $type, 146 type => $type,
145 mode => $mode, 147 mode => $mode,
146 save => $save, 148 save => $save,
147 args => \%args; 149 args => \%args,
150 );
148 151
149 } elsif ($cmd eq "-") { 152 } elsif ($cmd eq "-") {
150 my $objid = rcv_ptr; 153 my $objid = rcv_ptr;
151 my $save = (delete $_OBJ{$objid})->save; 154 my $save = (delete $_OBJ{$objid})->save;
152 snd_cmd "-"; 155 snd_cmd "-";
178sub mainloop { 181sub mainloop {
179 server_event while 1; 182 server_event while 1;
180} 183}
181 184
182sub init { 185sub init {
183 my $self = shift; 186 $interface = shift;
184 187
185 $IN_MOZILLA = 1;
186
187 open FD, "+<&=$_[0]"; binmode $FD; 188 open FD, "+<&=$_[0]"; binmode FD;
188 189
189 warn "init: ".Dumper(@_);
190
191 $self->mainloop; 190 $interface->mainloop;
192} 191}
193 192
194sub new { 193sub new {
195 my $class = shift; 194 my $class = shift;
196 my $self = bless { @_ }, $class; 195 my $self = bless { @_ }, $class;
202} 201}
203 202
204sub set_window { 203sub set_window {
205 my $self = shift; 204 my $self = shift;
206 my $new = shift; 205 my $new = shift;
206 print "window set calling with $new->{window}, $new->{w}, $new->{h} ($self->{window}\n";#d#
207 if ($self->{window}) { 207 if ($self->{window}) {
208 if ($self->{window}{window} ne $new->{window}) { 208 if ($self->{window}{window} ne $new->{window}) {
209 $self->window_delete($self->{window}); 209 $self->window_delete($self->{window});
210 } else { 210 } elsif ($self->{window}{w} != $new->{w}
211 or $self->{window}{h} != $new->{h}) {
211 $self->window_resize($new->{window}, $new->{w}, $new->{h}); 212 $self->window_resize($new->{window}, $new->{w}, $new->{h});
212 } 213 }
213 $self->{window} = $new; 214 $self->{window} = $new;
214 } else { 215 }
216
217 unless ($self->{window}) {
215 $self->{window} = $new; 218 $self->{window} = $new;
219 print "window new calling with $new->{window}, $new->{w}, $new->{h}\n";#d#
216 $self->window_new($new->{window}, $new->{w}, $new->{h}); 220 $self->window_new($new->{window}, $new->{w}, $new->{h});
217 } 221 }
218 warn "set_window: ".Dumper($self); 222 warn "set_window: ".Dumper($self);
219} 223}
220 224
221sub window_new {} 225sub window_new {}
222sub window_resize {} 226sub window_resize {}
227
223sub window_delete {} 228sub window_delete {
229 my $self = shift;
230 delete $self->{window};
231}
224 232
225sub save { 233sub save {
226 $_[0]->{save}{test} = ['t1',5,7]; 234 my $self = shift;
235 $self->set_window(undef);
227 Storable::nfreeze $_[0]->{save}; 236 Storable::nfreeze $self->{save};
228} 237}
229 238
230sub DESTROY { 239sub DESTROY {
231 warn "DESTROY"; 240 warn "DESTROY";
232} 241}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines