static void empathy_roster_view_dispose (GObject *object) { EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object); void (*chain_up) (GObject *) = ((GObjectClass *) empathy_roster_view_parent_class)->dispose; /* Start by clearing the view so our internal hash tables are cleared from * objects being destroyed. */ clear_view (self); stop_flashing (self); empathy_roster_view_set_live_search (self, NULL); g_clear_object (&self->priv->model); if (self->priv->search_id != 0) { g_source_remove (self->priv->search_id); self->priv->search_id = 0; } if (chain_up != NULL) chain_up (object); }
static void glade_eprop_model_data_add_row (GladeEditorProperty * eprop) { GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop); GValue value = { 0, }; GNode *node = NULL; GList *columns = NULL; GladeProperty *property = glade_editor_property_get_property (eprop); glade_property_get (property, &node); glade_widget_property_get (glade_property_get_widget (property), "columns", &columns); if (!columns) return; clear_view (eprop); if (!node) node = g_node_new (NULL); else node = glade_model_data_tree_copy (node); append_row (node, columns); eprop_data->adding_row = TRUE; g_value_init (&value, GLADE_TYPE_MODEL_DATA_TREE); g_value_take_boxed (&value, node); glade_editor_property_commit (eprop, &value); g_value_unset (&value); eprop_data->adding_row = FALSE; }
void empathy_roster_view_show_groups (EmpathyRosterView *self, gboolean show) { if (self->priv->show_groups == show) return; self->priv->show_groups = show; /* TODO: block sort/filter? */ clear_view (self); populate_view (self); g_object_notify (G_OBJECT (self), "show-groups"); }
static void glade_eprop_model_data_load (GladeEditorProperty * eprop, GladeProperty * property) { GladeEditorPropertyClass *parent_class = g_type_class_peek_parent (GLADE_EDITOR_PROPERTY_GET_CLASS (eprop)); GladeEPropModelData *eprop_data = GLADE_EPROP_MODEL_DATA (eprop); clear_view (eprop); /* Chain up in a clean state... */ parent_class->load (eprop, property); gtk_tree_view_set_model (eprop_data->view, NULL); if (!property) return; if ((eprop_data->store = eprop_model_data_generate_store (eprop)) != NULL) { eprop_data->selection = gtk_tree_view_get_selection (eprop_data->view); /* Pass ownership of the store to the view... */ gtk_tree_view_set_model (eprop_data->view, GTK_TREE_MODEL (eprop_data->store)); g_object_unref (G_OBJECT (eprop_data->store)); g_signal_connect (G_OBJECT (eprop_data->store), "row-deleted", G_CALLBACK (eprop_treeview_row_deleted), eprop); } /* Create new columns with renderers */ eprop_model_data_generate_columns (eprop); if (eprop_data->store) { if (eprop_data->adding_row) eprop_data_focus_new (eprop_data); else if (eprop_data->want_focus && eprop_data->editing_row >= 0 && eprop_data->editing_column >= 0) eprop_data_focus_editing_cell (eprop_data); } }
void screen_redraw() { //d3dmgr->EndShapesBatching(); //If called inside bound surface we need to finish drawing d3dmgr->BeginScene(); // Clean up any textures that ENIGMA may still think are binded but actually are not d3d_set_zwriteenable(true); if (!view_enabled) { screen_set_viewport(0, 0, window_get_region_width_scaled(), window_get_region_height_scaled()); clear_view(0, 0, room_width, room_height, 0, background_showcolor); draw_back(); draw_insts(); draw_tiles(); } else { //TODO: Possibly implement view option from Stupido to control which view clears the background // Only clear the background on the first visible view by checking if it hasn't been cleared yet bool draw_backs = true; bool background_allviews = true; // FIXME: Create a setting for this. for (view_current = 0; view_current < 8; view_current++) { int vc = (int)view_current; if (!view_visible[vc]) continue; int vob = (int)view_object[vc]; if (vob != -1) follow_object(vob, vc); screen_set_viewport(view_xport[vc], view_yport[vc], view_wport[vc], view_hport[vc]); clear_view(view_xview[vc], view_yview[vc], view_wview[vc], view_hview[vc], view_angle[vc], background_showcolor && draw_backs); if (draw_backs) draw_back(); draw_insts(); if (draw_tiles()) break; draw_backs = background_allviews; } view_current = 0; } // Now process the sub event of draw called draw gui // It is for drawing GUI elements without view scaling and transformation if (enigma::gui_used) { screen_set_viewport(0, 0, window_get_region_width_scaled(), window_get_region_height_scaled()); d3d_set_projection_ortho(0, 0, enigma::gui_width, enigma::gui_height, 0); // Clear the depth buffer if hidden surface removal is on at the beginning of the draw step. if (enigma::d3dMode) d3dmgr->Clear(0, NULL, D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); draw_gui(); } d3dmgr->EndScene(); ///TODO: screen_refresh() shouldn't be in screen_redraw(). They are separate functions for a reason. screen_refresh(); }
void screen_redraw() { // Clean up any textures that ENIGMA may still think are binded but actually are not d3d_set_zwriteenable(true); if (!view_enabled) { if (bound_framebuffer != 0) //This fixes off-by-one error when rendering on surfaces. This should be checked to see if other GPU's have the same effect screen_set_viewport(1, 1, window_get_region_width_scaled(), window_get_region_height_scaled()); else screen_set_viewport(0, 0, window_get_region_width_scaled(), window_get_region_height_scaled()); clear_view(0, 0, room_width, room_height, background_showcolor); draw_back(); draw_insts(); draw_tiles(); } else { //TODO: Possibly implement view option from Stupido to control which view clears the background // Only clear the background on the first visible view by checking if it hasn't been cleared yet bool draw_backs = true; bool background_allviews = true; // FIXME: Create a setting for this. for (view_current = 0; view_current < 8; view_current++) { int vc = (int)view_current; if (!view_visible[vc]) continue; int vob = (int)view_object[vc]; if (vob != -1) follow_object(vob, vc); if (bound_framebuffer != 0) //This fixes off-by-one error when rendering on surfaces. This should be checked to see if other GPU's have the same effect screen_set_viewport(view_xport[vc]+1, view_yport[vc]+1, view_wport[vc], view_hport[vc]); else printf("%d %d %d %d\n", (int)view_xport[vc], (int)view_yport[vc], (int)view_wport[vc], (int)view_hport[vc]), screen_set_viewport(view_xport[vc], view_yport[vc], view_wport[vc], view_hport[vc]); clear_view(view_xview[vc], view_yview[vc], view_wview[vc], view_hview[vc], background_showcolor && draw_backs); if (draw_backs) draw_back(); draw_insts(); if (draw_tiles()) break; draw_backs = background_allviews; } view_current = 0; } // Now process the sub event of draw called draw gui // It is for drawing GUI elements without view scaling and transformation if (enigma::gui_used) { screen_set_viewport(0, 0, window_get_region_width_scaled(), window_get_region_height_scaled()); d3d_set_projection_ortho(0, 0, enigma::gui_width, enigma::gui_height, 0); // Clear the depth buffer if hidden surface removal is on at the beginning of the draw step. if (enigma::d3dMode) glClear(GL_DEPTH_BUFFER_BIT); draw_gui(); } if (enigma::msaa_fbo != 0) { GLint fbo; glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &fbo); glBindFramebuffer(GL_READ_FRAMEBUFFER, enigma::msaa_fbo); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); //TODO: Change the code below to fix this to size properly to views glBlitFramebuffer(0, 0, window_get_region_width_scaled(), window_get_region_height_scaled(), 0, 0, window_get_region_width_scaled(), window_get_region_height_scaled(), GL_COLOR_BUFFER_BIT, GL_NEAREST); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo); // glReadPixels(0, 0, width, height, GL_BGRA, GL_UNSIGNED_BYTE, pixels); } ///TODO: screen_refresh() shouldn't be in screen_redraw(). They are separate functions for a reason. if (bound_framebuffer==0 || enigma::msaa_fbo != 0) { screen_refresh(); } }