<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Dangling pointers and memory corruption after output recreate."
   href="https://bugs.freedesktop.org/show_bug.cgi?id=87824#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Dangling pointers and memory corruption after output recreate."
   href="https://bugs.freedesktop.org/show_bug.cgi?id=87824">bug 87824</a>
              from <span class="vcard"><a class="email" href="mailto:ppaalanen@gmail.com" title="Pekka Paalanen <ppaalanen@gmail.com>"> <span class="fn">Pekka Paalanen</span></a>
</span></b>
        <pre>I think the fix is more complicated than that. You cannot set the outputs to
NULL, because we use the pointers to denote that a surface is mapped (it's
ugly, yes, pending for a rewrite). Windows should usually be moved, not
unmapped.

When an output is disconnected, all weston_surfaces on that output should be
moved to remaining outputs, or destroyed or unmapped. This is the
responsibility of the shell plugin. I think that if a shell plugin does it
right, there won't be any dangling weston_output pointers in any weston_view or
weston_surface.

Still, a safety measure similar to what you suggest would be nice, along with
some weston_log()s to yell about the shell plugin not doing its job. However,
that needs to run only after the shell has had a chance to reorganize all
surfaces.

I'm not sure if you have a different use case in mind, though: removing the
very last output, leaving none? If that is so, we'd need to fix the "is
mapped?" problem first, then do this, and then also fix the dozens other places
that assume that there is at least one output at all times. This would be nice,
too.

So, is this bug about some shell plugin not doing its job, needing the safety
measure, or removing the last output leaving no outputs at all?</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>