summaryrefslogtreecommitdiff
path: root/os2
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>2002-12-13 06:00:48 -0800
committerhv <hv@crypt.org>2002-12-17 01:58:32 +0000
commit8c4b3a79c68253730d09878656b5526d4d65ef85 (patch)
tree715a6995239e7a71baee065eb9b921ef284f7779 /os2
parentae2efb68622a795e5d137b8fd8181b67e74a58b9 (diff)
downloadperl-8c4b3a79c68253730d09878656b5526d4d65ef85.tar.gz
Morphing to PM on OS/2
Message-ID: <20021213220048.GA2606@math.berkeley.edu> p4raw-id: //depot/perl@18314
Diffstat (limited to 'os2')
-rw-r--r--os2/OS2/Process/t/os2_process.t10
-rw-r--r--os2/os2.c4
2 files changed, 9 insertions, 5 deletions
diff --git a/os2/OS2/Process/t/os2_process.t b/os2/OS2/Process/t/os2_process.t
index f17104752a..016c799360 100644
--- a/os2/OS2/Process/t/os2_process.t
+++ b/os2/OS2/Process/t/os2_process.t
@@ -24,7 +24,7 @@ BEGIN { # Remap I/O to the parent's window
}
use strict;
-use Test::More tests => 227;
+use Test::More tests => 230;
use OS2::Process;
sub SWP_flags ($) {
@@ -237,21 +237,25 @@ ok hWindowPos_set({behind => 4}, $k_hwnd), # HWND_BOTTOM
# This does not work, the result is the handle of "Window List"
# is((hWindowPos $k_hwnd)->{behind}, 4, 'kis is at back');
-my (@list, $next);
+my (@list, $next, @list1);
{ my $force_PM = OS2::localMorphPM->new(0);
ok $force_PM, 'morphed to PM locally again';
$enum_handle = BeginEnumWindows 1; # HWND_DESKTOP
ok $enum_handle, 'start enumeration';
push @list, $next while $next = GetNextWindow $enum_handle;
+ @list1 = ChildWindows;
+ ok 1, 'embedded ChildWindows()';
ok EndEnumWindows($enum_handle), 'end enumeration';
+ is_deeply \@list, \@list1, 'Manual list same as by ChildWindows()';
# Apparently, the 'Desktop' window is still behind us;
# Note that this window is *not* what is returned by DesktopWindow
pop @list if WindowText($list[-1]) eq 'Desktop';
}
is ($list[-1], $k_hwnd, 'kid is the last in z-order enumeration');
# print "# kid=$k_hwnd in @list\n";
-@list = ChildWindows; # HWND_DESKTOP
+@list = ChildWindows;
+is_deeply \@list, \@list1, 'Other ChildWindows(), same result';
ok scalar @list, 'ChildWindows works';
is $list[-2], $k_hwnd, 'kid is the last but one in ChildWindows';
diff --git a/os2/os2.c b/os2/os2.c
index b484e9d5df..fc05f4e9ae 100644
--- a/os2/os2.c
+++ b/os2/os2.c
@@ -1429,11 +1429,10 @@ Perl_hab_GET() /* Needed if perl.h cannot be included */
HMQ
Perl_Register_MQ(int serve)
{
+ if (Perl_hmq_refcnt <= 0) {
PPIB pib;
PTIB tib;
- if (Perl_hmq_refcnt > 0)
- return Perl_hmq;
Perl_hmq_refcnt = 0; /* Be extra safe */
DosGetInfoBlocks(&tib, &pib);
Perl_os2_initial_mode = pib->pib_ultype;
@@ -1451,6 +1450,7 @@ Perl_Register_MQ(int serve)
_exit(188); /* Panic can try to create a window. */
Perl_croak_nocontext("Cannot create a message queue, or morph to a PM application");
}
+ }
if (serve) {
if ( Perl_hmq_servers <= 0 /* Safe to inform us on shutdown, */
&& Perl_hmq_refcnt > 0 ) /* this was switched off before... */