[GRASS-dev] [GRASS GIS] #2285: Repetitive d.rast calls for wx0 monitor from command line
GRASS GIS
trac at osgeo.org
Thu Oct 23 23:56:18 PDT 2014
#2285: Repetitive d.rast calls for wx0 monitor from command line
-----------------------+----------------------------------------------------
Reporter: hcho | Owner: grass-dev@…
Type: defect | Status: closed
Priority: critical | Milestone: 7.0.0
Component: Display | Version: svn-trunk
Resolution: fixed | Keywords: d.mon
Platform: Linux | Cpu: x86-64
-----------------------+----------------------------------------------------
Changes (by neteler):
* status: reopened => closed
* resolution: => fixed
Old description:
> I was drawing 168 raster maps on the wx monitor from a shell script:
> {{{
> #!/bin/sh
> maps=`g.mlist rast pattern="n[0-9]*w[0-9]*_1" sep=,`
> g.region rast=$maps res=00:01:00
> d.erase
> for i in `echo $maps | sed 's/,/ /g'`
> do
> d.rast $i
> done
> }}}
> after starting and selecting a wx monitor. I'm getting the following
> error messages and not all the raster maps are displayed:
> {{{
> 100%
> 100%
> 100%
> 100%
> 100%
> 100%
> 100%
> ERROR: No graphics device selected. Use d.mon to select graphics device.
> ERROR: No graphics device selected. Use d.mon to select graphics device.
> ERROR: No graphics device selected. Use d.mon to select graphics device.
> 100%
> 100%
> 100%
> }}}
>
> I digged into the wx monitor script (gui/wxpython/mapdisp/main.py
> DMonMap.Render) and found that it unsets MONITOR (because
> GRASS_RENDER_IMMEDIATE doesn't like monitors) before calling d.rast and
> then restores it:
> {{{
> currMon = grass.gisenv()['MONITOR']
>
> RunCommand('g.gisenv',
> unset = 'MONITOR') # GRASS_RENDER_IMMEDIATE doesn't
> like monitors
>
> ret = Map.Render(self, *args, **kwargs)
>
> RunCommand('g.gisenv',
> set = 'MONITOR=%s' % currMon)
> }}}
>
> So far, so good. Unfortunately, the wx monitor is running in a different
> process than d.rast calls from command line. Many d.rast calls cannot see
> the MONITOR variable while the monitor is rendering existing maps, which
> causes the above error.
New description:
I was drawing 168 raster maps on the wx monitor from a shellsort() from <a
script:
{{{
#!/bin/sh
maps=`g.mlist rast pattern="n[0-9]*w[0-9]*_1" sep=,`
g.region rast=$maps res=00:01:00
d.erase
for i in `echo $maps | sed 's/,/ /g'`
do
d.rast $i
done
}}}
after starting and selecting a wx monitor. I'm getting the following error
messages and not all the raster maps are displayed:
{{{
100%
100%
100%
100%
100%
100%
100%
ERROR: No graphics device selected. Use d.mon to select graphics device.
ERROR: No graphics device selected. Use d.mon to select graphics device.
ERROR: No graphics device selected. Use d.mon to select graphics device.
100%
100%
100%
}}}
I digged into the wx monitor script (gui/wxpython/mapdisp/main.py
DMonMap.Render) and found that it unsets MONITOR (because
GRASS_RENDER_IMMEDIATE doesn't like monitors) before calling d.rast and
then restores it:
{{{
currMon = grass.gisenv()['MONITOR']
RunCommand('g.gisenv',
unset = 'MONITOR') # GRASS_RENDER_IMMEDIATE doesn't
like monitors
ret = Map.Render(self, *args, **kwargs)
RunCommand('g.gisenv',
set = 'MONITOR=%s' % currMon)
}}}
So far, so good. Unfortunately, the wx monitor is running in a different
process than d.rast calls from command line. Many d.rast calls cannot see
the MONITOR variable while the monitor is rendering existing maps, which
causes the above error.
--
Comment:
Problem reported in the ticket has been solved, closing.
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2285#comment:7>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list