X11-GLX
view release on metacpan or search on metacpan
t/70-compositor.t view on Meta::CPAN
my $client= $x->connection;
plan skip_all => 'Xcomposite not supported by server'
unless $client->XCompositeQueryVersion;
my $ext= glXQueryExtensionsString($client);
plan skip_all => 'GLX_EXT_texture_from_pixmap not supported by server'
unless $ext =~ /GLX_EXT_texture_from_pixmap/;
sub err(&) { my $code= shift; my $ret; { local $@= ''; eval { $code->() }; $client->flush_sync; $ret= $@; } $ret }
my ($root, $overlay, $region);
note "local Xc ver = ".X11::Xlib::XCompositeVersion." server Xc ver = ".join('.', $client->XCompositeQueryVersion);
is( err{ $root= $client->root_window }, '', 'get root window' );
note "root = ".$root->summarize;
is( err{ $client->XCompositeRedirectSubwindows($root, CompositeRedirectAutomatic) }, '', 'XCompositeRedirectSubwindows' );
is( err{ $root->event_mask_include(SubstructureNotifyMask) }, '', 'listen SubstructureNotifyMask' );
is( err{ $overlay= $client->XCompositeGetOverlayWindow($root) }, '', 'XCompositeGetOverlayWindow' );
note "overlay = ".$overlay->summarize;
#sub nullify_window_region
{
my $rgn= $client->XFixesCreateRegion([ { x => 100, y => 100, width => 150, height => 150 } ]);
$overlay->set_bounding_region($rgn);
$overlay->set_input_region($rgn);
}
my @glx_fbconfig= (
GLX_RENDER_TYPE, GLX_RGBA_BIT,
GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
GLX_DOUBLEBUFFER, 1,
GLX_RED_SIZE, 8,
GLX_GREEN_SIZE, 8,
GLX_BLUE_SIZE, 8,
GLX_ALPHA_SIZE, 8,
GLX_DEPTH_SIZE, 16,
);
my $dwim= X11::GLX::DWIM->new(
display => $client,
fbconfig => \@glx_fbconfig,
target => { window => { x => 290, y => 90, width => 32, height => 32, parent => $overlay } },
gl_projection => {}
);
#$client->XReparentWindow($dwim->target, $overlay, 0, 0);
$dwim->target->event_mask_include(ExposureMask);
$dwim->target->set_bounding_region();
#$dwim->target->show;
my $client2;
if ($ENV{TEST_APP}) {
local $ENV{DISPLAY}= $x->display_string;
open $client2, '-|', "$ENV{TEST_APP} 2>&1" or die "open pipe from '$ENV{TEST_APP}': $!";
} else {
note "client2 connecting to ".$x->display_string;
t/70-compositor.t view on Meta::CPAN
}
my $r= 0;
my $start= time;
while (time - $start < 10) {
my $e= $client->wait_event(timeout => 1);
if ($e) {
note 'event '.$e->summarize;
if ($e->type == CreateNotify) {
my $w= $client->get_cached_window($e->window);
next if $w == $overlay;
note "Window created: ".$w->summarize.sprintf(' (%X)', $w->xid);
}
elsif ($e->type == MapNotify) {
my $w= $client->get_cached_window($e->window);
next if $w == $overlay;
note "Window mapped: ".$w->summarize.sprintf(' (%X)', $w->xid);
$w->event_mask_include(ExposureMask);
}
} else {
note int(time - $start);
glClearColor(.5, 1, .5, .5);
glClearDepth(1);
glColor4d(1,1,1,1);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
( run in 0.560 second using v1.01-cache-2.11-cpan-3b35f9de6a3 )