mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
Work on issues related to resizing buffers
This commit is contained in:
parent
4669ea9486
commit
b3b365c99e
@ -58,6 +58,24 @@ GraphicsBuffer::
|
|||||||
~GraphicsBuffer() {
|
~GraphicsBuffer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: GraphicsBuffer::set_size
|
||||||
|
// Access: Public, Virtual
|
||||||
|
// Description: This is called by the GraphicsEngine to request that
|
||||||
|
// the buffer resize itself. Although calls to get the
|
||||||
|
// size will return the new value, much of the actual
|
||||||
|
// resizing work doesn't take place until the next
|
||||||
|
// begin_frame. Not all buffers are resizeable.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
void GraphicsBuffer::
|
||||||
|
set_size(int x, int y) {
|
||||||
|
if ((_creation_flags & GraphicsPipe::BF_resizeable) == 0) {
|
||||||
|
nassert_raise("Cannot resize buffer unless it is created with BF_resizeable flag");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
set_size_and_recalc(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: GraphicsBuffer::request_open
|
// Function: GraphicsBuffer::request_open
|
||||||
// Access: Public, Virtual
|
// Access: Public, Virtual
|
||||||
|
@ -43,6 +43,7 @@ protected:
|
|||||||
|
|
||||||
PUBLISHED:
|
PUBLISHED:
|
||||||
virtual ~GraphicsBuffer();
|
virtual ~GraphicsBuffer();
|
||||||
|
void set_size(int x, int y);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void request_open();
|
virtual void request_open();
|
||||||
|
@ -84,10 +84,11 @@ PUBLISHED:
|
|||||||
// Miscellaneous control flags.
|
// Miscellaneous control flags.
|
||||||
BF_can_bind_color = 0x0040, // Need capability: bind the color bitplane to a tex.
|
BF_can_bind_color = 0x0040, // Need capability: bind the color bitplane to a tex.
|
||||||
BF_can_bind_every = 0x0080, // Need capability: bind all bitplanes to a tex.
|
BF_can_bind_every = 0x0080, // Need capability: bind all bitplanes to a tex.
|
||||||
BF_size_track_host = 0x0100, // Buffer should track the host size.
|
BF_resizeable = 0x0100, // Buffer should allow set_size.
|
||||||
BF_rtt_cumulative = 0x0200, // Buffer supports cumulative render-to-texture.
|
BF_size_track_host = 0x0200, // Buffer should track the host size.
|
||||||
BF_fb_props_optional = 0x0400, // FrameBufferProperties can be ignored.
|
BF_rtt_cumulative = 0x0400, // Buffer supports cumulative render-to-texture.
|
||||||
BF_size_square = 0x0800, // x_size must equal y_size (e.g. for cube maps)
|
BF_fb_props_optional = 0x0800, // FrameBufferProperties can be ignored.
|
||||||
|
BF_size_square = 0x1000, // x_size must equal y_size (e.g. for cube maps)
|
||||||
};
|
};
|
||||||
|
|
||||||
INLINE bool is_valid() const;
|
INLINE bool is_valid() const;
|
||||||
|
@ -73,6 +73,24 @@ ParasiteBuffer::
|
|||||||
_is_valid = false;
|
_is_valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ParasiteBuffer::set_size
|
||||||
|
// Access: Public, Virtual
|
||||||
|
// Description: This is called by the GraphicsEngine to request that
|
||||||
|
// the buffer resize itself. Although calls to get the
|
||||||
|
// size will return the new value, much of the actual
|
||||||
|
// resizing work doesn't take place until the next
|
||||||
|
// begin_frame. Not all buffers are resizeable.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
void ParasiteBuffer::
|
||||||
|
set_size(int x, int y) {
|
||||||
|
if ((_creation_flags & GraphicsPipe::BF_resizeable) == 0) {
|
||||||
|
nassert_raise("Cannot resize buffer unless it is created with BF_resizeable flag");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
set_size_and_recalc(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: ParasiteBuffer::is_active
|
// Function: ParasiteBuffer::is_active
|
||||||
// Access: Published, Virtual
|
// Access: Published, Virtual
|
||||||
|
@ -61,6 +61,7 @@ PUBLISHED:
|
|||||||
virtual ~ParasiteBuffer();
|
virtual ~ParasiteBuffer();
|
||||||
|
|
||||||
virtual bool is_active() const;
|
virtual bool is_active() const;
|
||||||
|
void set_size(int x, int y);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool begin_frame(FrameMode mode, Thread *current_thread);
|
virtual bool begin_frame(FrameMode mode, Thread *current_thread);
|
||||||
|
@ -226,9 +226,16 @@ rebuild_bitplanes() {
|
|||||||
|
|
||||||
// Decide how big the bitplanes should be.
|
// Decide how big the bitplanes should be.
|
||||||
|
|
||||||
|
if ((_host != 0)&&(_creation_flags & GraphicsPipe::BF_size_track_host)) {
|
||||||
|
if ((_host->get_x_size() != _x_size)||
|
||||||
|
(_host->get_y_size() != _y_size)) {
|
||||||
|
set_size_and_recalc(_host->get_x_size(),
|
||||||
|
_host->get_y_size());
|
||||||
|
}
|
||||||
|
}
|
||||||
int bitplane_x = _x_size;
|
int bitplane_x = _x_size;
|
||||||
int bitplane_y = _y_size;
|
int bitplane_y = _y_size;
|
||||||
if (!_gsg->get_supports_tex_non_pow2()) {
|
if (Texture::get_textures_power_2() != ATS_none) {
|
||||||
bitplane_x = Texture::up_to_power_2(bitplane_x);
|
bitplane_x = Texture::up_to_power_2(bitplane_x);
|
||||||
bitplane_y = Texture::up_to_power_2(bitplane_y);
|
bitplane_y = Texture::up_to_power_2(bitplane_y);
|
||||||
}
|
}
|
||||||
|
@ -109,12 +109,22 @@ make_output(const string &name,
|
|||||||
if (retry == 0) {
|
if (retry == 0) {
|
||||||
if (((flags&BF_require_parasite)!=0)||
|
if (((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_refuse_window)!=0)||
|
((flags&BF_refuse_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_color)!=0)||
|
((flags&BF_can_bind_color)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
// Early failure - if we are sure that this buffer WONT
|
||||||
|
// meet specs, we can bail out early.
|
||||||
|
if ((flags & BF_fb_props_optional) == 0) {
|
||||||
|
if ((fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_float() > 0)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
return new wdxGraphicsWindow8(this, name, fb_prop, win_prop,
|
return new wdxGraphicsWindow8(this, name, fb_prop, win_prop,
|
||||||
flags, gsg, host);
|
flags, gsg, host);
|
||||||
}
|
}
|
||||||
@ -125,11 +135,28 @@ make_output(const string &name,
|
|||||||
if ((!support_render_texture)||
|
if ((!support_render_texture)||
|
||||||
((flags&BF_require_parasite)!=0)||
|
((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_require_window)!=0)||
|
((flags&BF_require_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
// Early failure - if we are sure that this buffer WONT
|
||||||
|
// meet specs, we can bail out early.
|
||||||
|
if ((flags & BF_fb_props_optional) == 0) {
|
||||||
|
if ((fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_float() > 0)||
|
||||||
|
(fb_prop.get_indexed_color() > 0)||
|
||||||
|
(fb_prop.get_back_buffers() > 0)||
|
||||||
|
(fb_prop.get_accum_bits() > 0)||
|
||||||
|
(fb_prop.get_multisamples() > 0)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Early success - if we are sure that this buffer WILL
|
||||||
|
// meet specs, we can precertify it.
|
||||||
|
// This looks rather overly optimistic -- ie, buggy.
|
||||||
if ((gsg != 0)&&
|
if ((gsg != 0)&&
|
||||||
(gsg->is_valid())&&
|
(gsg->is_valid())&&
|
||||||
(!gsg->needs_reset())&&
|
(!gsg->needs_reset())&&
|
||||||
|
@ -247,9 +247,16 @@ rebuild_bitplanes() {
|
|||||||
|
|
||||||
// Decide how big the bitplanes should be.
|
// Decide how big the bitplanes should be.
|
||||||
|
|
||||||
|
if ((_host != 0)&&(_creation_flags & GraphicsPipe::BF_size_track_host)) {
|
||||||
|
if ((_host->get_x_size() != _x_size)||
|
||||||
|
(_host->get_y_size() != _y_size)) {
|
||||||
|
set_size_and_recalc(_host->get_x_size(),
|
||||||
|
_host->get_y_size());
|
||||||
|
}
|
||||||
|
}
|
||||||
int bitplane_x = _x_size;
|
int bitplane_x = _x_size;
|
||||||
int bitplane_y = _y_size;
|
int bitplane_y = _y_size;
|
||||||
if (!_gsg->get_supports_tex_non_pow2()) {
|
if (Texture::get_textures_power_2() != ATS_none) {
|
||||||
bitplane_x = Texture::up_to_power_2(bitplane_x);
|
bitplane_x = Texture::up_to_power_2(bitplane_x);
|
||||||
bitplane_y = Texture::up_to_power_2(bitplane_y);
|
bitplane_y = Texture::up_to_power_2(bitplane_y);
|
||||||
}
|
}
|
||||||
@ -297,8 +304,7 @@ rebuild_bitplanes() {
|
|||||||
_color_backing_store = NULL;
|
_color_backing_store = NULL;
|
||||||
}
|
}
|
||||||
color_tex = get_texture(color_tex_index);
|
color_tex = get_texture(color_tex_index);
|
||||||
color_tex->set_x_size(bitplane_x);
|
color_tex->set_size_padded(_x_size, _y_size);
|
||||||
color_tex->set_y_size(bitplane_y);
|
|
||||||
color_tex->set_format(Texture::F_rgba);
|
color_tex->set_format(Texture::F_rgba);
|
||||||
color_ctx =
|
color_ctx =
|
||||||
DCAST(DXTextureContext9,
|
DCAST(DXTextureContext9,
|
||||||
@ -370,8 +376,7 @@ rebuild_bitplanes() {
|
|||||||
depth_tex = get_texture(depth_tex_index);
|
depth_tex = get_texture(depth_tex_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
depth_tex->set_x_size(bitplane_x);
|
depth_tex->set_size_padded(_x_size, _y_size);
|
||||||
depth_tex->set_y_size(bitplane_y);
|
|
||||||
depth_tex->set_format(Texture::F_depth_stencil);
|
depth_tex->set_format(Texture::F_depth_stencil);
|
||||||
depth_ctx =
|
depth_ctx =
|
||||||
DCAST(DXTextureContext9,
|
DCAST(DXTextureContext9,
|
||||||
|
@ -109,12 +109,22 @@ make_output(const string &name,
|
|||||||
if (retry == 0) {
|
if (retry == 0) {
|
||||||
if (((flags&BF_require_parasite)!=0)||
|
if (((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_refuse_window)!=0)||
|
((flags&BF_refuse_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_color)!=0)||
|
((flags&BF_can_bind_color)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
// Early failure - if we are sure that this buffer WONT
|
||||||
|
// meet specs, we can bail out early.
|
||||||
|
if ((flags & BF_fb_props_optional) == 0) {
|
||||||
|
if ((fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_float() > 0)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
return new wdxGraphicsWindow9(this, name, fb_prop, win_prop,
|
return new wdxGraphicsWindow9(this, name, fb_prop, win_prop,
|
||||||
flags, gsg, host);
|
flags, gsg, host);
|
||||||
}
|
}
|
||||||
@ -125,11 +135,26 @@ make_output(const string &name,
|
|||||||
if ((!support_render_texture)||
|
if ((!support_render_texture)||
|
||||||
((flags&BF_require_parasite)!=0)||
|
((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_require_window)!=0)||
|
((flags&BF_require_window)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
// Early failure - if we are sure that this buffer WONT
|
||||||
|
// meet specs, we can bail out early.
|
||||||
|
if ((flags & BF_fb_props_optional) == 0) {
|
||||||
|
if ((fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_rgba() > 0)||
|
||||||
|
(fb_prop.get_aux_float() > 0)||
|
||||||
|
(fb_prop.get_indexed_color() > 0)||
|
||||||
|
(fb_prop.get_back_buffers() > 0)||
|
||||||
|
(fb_prop.get_accum_bits() > 0)||
|
||||||
|
(fb_prop.get_multisamples() > 0)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Early success - if we are sure that this buffer WILL
|
||||||
|
// meet specs, we can precertify it.
|
||||||
|
// This looks rather overly optimistic -- ie, buggy.
|
||||||
if ((gsg != 0)&&
|
if ((gsg != 0)&&
|
||||||
(gsg->is_valid())&&
|
(gsg->is_valid())&&
|
||||||
(!gsg->needs_reset())&&
|
(!gsg->needs_reset())&&
|
||||||
|
@ -306,6 +306,7 @@ bind_slot(bool rb_resize, Texture **attach, RenderTexturePlane slot, GLenum atta
|
|||||||
if ((_tex[slot] == tex)&&
|
if ((_tex[slot] == tex)&&
|
||||||
(tex->get_x_size() == _rb_size_x)&&
|
(tex->get_x_size() == _rb_size_x)&&
|
||||||
(tex->get_y_size() == _rb_size_y)) {
|
(tex->get_y_size() == _rb_size_y)) {
|
||||||
|
tex->set_pad_size(_rb_size_x - _x_size, _rb_size_y - _y_size);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,6 +232,7 @@ make_output(const string &name,
|
|||||||
if (retry == 0) {
|
if (retry == 0) {
|
||||||
if (((flags&BF_require_parasite)!=0)||
|
if (((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_refuse_window)!=0)||
|
((flags&BF_refuse_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_color)!=0)||
|
((flags&BF_can_bind_color)!=0)||
|
||||||
@ -283,6 +284,7 @@ make_output(const string &name,
|
|||||||
if ((!support_rtt)||
|
if ((!support_rtt)||
|
||||||
((flags&BF_require_parasite)!=0)||
|
((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_require_window)!=0)||
|
((flags&BF_require_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
|
@ -95,6 +95,7 @@ make_output(const string &name,
|
|||||||
if ((!support_render_texture)||
|
if ((!support_render_texture)||
|
||||||
((flags&BF_require_parasite)!=0)||
|
((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_require_window)!=0)||
|
((flags&BF_require_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)||
|
((flags&BF_can_bind_every)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)) {
|
((flags&BF_rtt_cumulative)!=0)) {
|
||||||
|
@ -230,6 +230,7 @@ make_output(const string &name,
|
|||||||
if (retry == 0) {
|
if (retry == 0) {
|
||||||
if (((flags&BF_require_parasite)!=0)||
|
if (((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_refuse_window)!=0)||
|
((flags&BF_refuse_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_can_bind_color)!=0)||
|
((flags&BF_can_bind_color)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
@ -261,6 +262,7 @@ make_output(const string &name,
|
|||||||
if ((!support_render_texture)||
|
if ((!support_render_texture)||
|
||||||
((flags&BF_require_parasite)!=0)||
|
((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_require_window)!=0)||
|
((flags&BF_require_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_can_bind_every)!=0)) {
|
((flags&BF_can_bind_every)!=0)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -162,14 +162,7 @@ bind_texture_to_pbuffer() {
|
|||||||
_pbuffer_bound->release(wglgsg->get_prepared_objects());
|
_pbuffer_bound->release(wglgsg->get_prepared_objects());
|
||||||
_pbuffer_bound = 0;
|
_pbuffer_bound = 0;
|
||||||
}
|
}
|
||||||
int tex_x = _x_size;
|
tex->set_size_padded(_x_size, _y_size);
|
||||||
int tex_y = _y_size;
|
|
||||||
if (!wglgsg->get_supports_tex_non_pow2()) {
|
|
||||||
tex_x = Texture::up_to_power_2(tex_x);
|
|
||||||
tex_y = Texture::up_to_power_2(tex_y);
|
|
||||||
}
|
|
||||||
tex->set_x_size(tex_x);
|
|
||||||
tex->set_y_size(tex_y);
|
|
||||||
if (tex->get_match_framebuffer_format()) {
|
if (tex->get_match_framebuffer_format()) {
|
||||||
if (_fb_properties.get_alpha_bits()) {
|
if (_fb_properties.get_alpha_bits()) {
|
||||||
tex->set_format(Texture::F_rgba);
|
tex->set_format(Texture::F_rgba);
|
||||||
@ -421,7 +414,7 @@ rebuild_bitplanes() {
|
|||||||
// Determine what pbuffer attributes are needed
|
// Determine what pbuffer attributes are needed
|
||||||
// for currently-applicable textures.
|
// for currently-applicable textures.
|
||||||
|
|
||||||
if (_creation_flags & GraphicsPipe::BF_size_track_host) {
|
if ((_host != 0)&&(_creation_flags & GraphicsPipe::BF_size_track_host)) {
|
||||||
if ((_host->get_x_size() != _x_size)||
|
if ((_host->get_x_size() != _x_size)||
|
||||||
(_host->get_y_size() != _y_size)) {
|
(_host->get_y_size() != _y_size)) {
|
||||||
set_size_and_recalc(_host->get_x_size(),
|
set_size_and_recalc(_host->get_x_size(),
|
||||||
@ -430,7 +423,7 @@ rebuild_bitplanes() {
|
|||||||
}
|
}
|
||||||
int desired_x = _x_size;
|
int desired_x = _x_size;
|
||||||
int desired_y = _y_size;
|
int desired_y = _y_size;
|
||||||
if ((bindtexture != 0)&&(!wglgsg->get_supports_tex_non_pow2())) {
|
if ((bindtexture != 0)&&(Texture::get_textures_power_2() != ATS_none)) {
|
||||||
desired_x = Texture::up_to_power_2(desired_x);
|
desired_x = Texture::up_to_power_2(desired_x);
|
||||||
desired_y = Texture::up_to_power_2(desired_y);
|
desired_y = Texture::up_to_power_2(desired_y);
|
||||||
}
|
}
|
||||||
|
@ -138,6 +138,7 @@ make_output(const string &name,
|
|||||||
if (retry == 0) {
|
if (retry == 0) {
|
||||||
if (((flags&BF_require_parasite)!=0)||
|
if (((flags&BF_require_parasite)!=0)||
|
||||||
((flags&BF_refuse_window)!=0)||
|
((flags&BF_refuse_window)!=0)||
|
||||||
|
((flags&BF_resizeable)!=0)||
|
||||||
((flags&BF_size_track_host)!=0)||
|
((flags&BF_size_track_host)!=0)||
|
||||||
((flags&BF_rtt_cumulative)!=0)||
|
((flags&BF_rtt_cumulative)!=0)||
|
||||||
((flags&BF_can_bind_color)!=0)||
|
((flags&BF_can_bind_color)!=0)||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user