;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

OPINIÃO

'Na despedida a Gal, agradeço pela coragem que ela me ensinou a ver em mim'

A cantora Gal Costa, em ensaio de 2018 para Universa - Lucas Lima/Universa
A cantora Gal Costa, em ensaio de 2018 para Universa Imagem: Lucas Lima/Universa

Do UOL Esporte em colaboração para Universa, em São Paulo

11/11/2022 04h00Atualizada em 14/11/2022 12h13

Esta é a versão online da newsletter de Universa enviada hoje (11). Quer receber a próxima edição da newsletter na semana que vem no seu email? Clique aqui e se cadastre. s UOL ainda podem ter 11 boletins exclusivos toda semana

Nesta sexta-feira (11), dia do velório de Gal Costa, escrevo a todas às "vacas profanas" que, de algum modo, como eu, se fortaleceram sob a voz aguda de Gal Costa.

Eu era uma menina descarada quando me enfiei a entrevistar Gal para Universa, em 2018. Tinha 22 anos, quase nenhuma experiência, mas me achava "braba" o suficiente para encarar uma das mulheres mais fortes sobre as quais já tinha ouvido falar.

Desmoronei quando a vi e demorei um tanto para compreender a potência e o poder daquela figura, do que aquilo representava, da minha pequenez —e que lindo ser minúscula perto de Gal Costa. Ao me sentar de frente para ela, junto da minha editora, Juliana Linhares, senti meu corpo tremer por inteiro. Ela observou o tamanho do nervosismo da menina —como ou a me chamar.

Hoje, quatro anos depois e ainda lamentando a perda de uma das maiores mulheres do Brasil, somo um bocado de evoluções pessoais e no currículo. Olho para aquele episódio com humor e com carinho. Não me envergonho. Me orgulho. Meu olhar sobre tudo que envolveu aquele dia —até sobre minha decisão de botar um vestidinho simples e me esconder na figura de menina— é um olhar de coragem. E coragem é o adjetivo que talvez mais bem caracterize Gal Costa.

Gal ao lado da repórter Talyta Vespa - Arquivo pessoal - Arquivo pessoal
Gal ao lado da repórter Talyta Vespa
Imagem: Arquivo pessoal

Ao velório não poderei comparecer, mas me despeço dela relembrando nosso encontro e agradecendo pela mulher corajosa que foi e que me incitou a ver a coragem em mim.

Sua força e sua voz vão, para sempre, ecoar como trovoada.

Ainda lembro a cena de Gal na minha frente: se expressava na fala mansa, mas firme. E sossegada, se soltou enquanto se espalhava num sofazinho. Gal era amor. Da cabeça aos pés —nesse encontro, descalços.

Foram 41 discos, 30 indicações para prêmios, cerca de 480 parcerias e registros de diversos shows em que foi aplaudida por 10, 20, 30 minutos. Uma carreira exorbitante, estrondosa, tempestuosa como a filha do vento.

Na nossa conversa, pouco antes da eleição que daria a presidência a Jair Bolsonaro (PL), ela criticou pesadamente o então candidato, declarou voto em Ciro Gomes (PDT) e se disse contra a liberação das drogas. "Como dizia Brizola, artista não dá voto, mas tira."

Gostosa. Na vibe. Essa vibe deliciosa, libidinosa, gigantesca de Gal Costa virou o título do resultado da entrevista, cujos bastidores conto pela primeira vez neste texto. Botar num texto essa abrangência de pessoa, e tudo que a envolve, é tão difícil quanto olhar nos olhos castanhos com bordinhas azuladas que ela tinha.

Obrigada, Gal.
E que o resto inunde as almas dos caretas.

Errata: este conteúdo foi atualizado
Diferentemente do que foi publicado, Gal não era filha da orixá Iansã, e sim de Omolu, conforme foi divulgado pelo Terreiro do Gantois, casa de candomblé da qual a cantora fazia parte.

** Este texto não reflete, necessariamente, a opinião do UOL