Я написал библиотеку, используя API EGL. Эта библиотека имеет функции «init» и «deinit». В функции 'init' создается собственный идентификатор окна, переданный пользователем, с использованием этого собственного идентификатора окна создается eglCreateWindowSurface. В функции 'deinit' поверхность уничтожается с помощью eglDestroySurface.
Теперь пользователь снова вызывает функцию 'init', чтобы создать другой eglCreateWindowSurface, но он передал тот же идентификатор окна, что и раньше (поскольку он не закрыл свое окно), здесь eglCreateWindowSurface завершился с ошибкой EGL_BAD_ALLOC.
Я читал спецификации EGL
Если уже есть EGLSurface, связанный с win (в результате предыдущего вызова eglCreateWindowSurface), то генерируется ошибка EGL_BAD_ALLOC.
Я не понимаю этого, когда я уже разрушил поверхность, используя eglDestroySurface, почему его надо создавать снова, используя тот же идентификатор окна.
Эта проблема может возникнуть, когда xserver повторно использует ранее закрытый идентификатор окна?